天天看点

python unicode编码转换中文_用Python将中文转换成拼音

大噶好,我是郭小帅。

各位老baby们,我更新啦!感动吗?我连自己都被感动了!好久好久没更新了,我说我忘记公众号密码了你们信嘛?

最近有几位粉丝吧,干啥啥不行,催更第一名。行,我服了,我放下了手里的荣耀,放弃了我的队友们,更一波!!【这段时间流失了不少粉,扎铁啊老心们】

python unicode编码转换中文_用Python将中文转换成拼音

最近呢,工作上遇到了不少案例,我都会来给大家都掰扯掰扯。

就比如,最近有个老baby问我,你能不能把中文转换成拼音呀?当时我就在想,这是什么需求?为啥会有这种需求?是啥应用场景呢?【懵逼】

但是像我这么知【pa】书【re】达【ma】理【fan】的人,从来不问原因,干活就完了!

我就琢磨,这种需求应该网上有很多嘛,Execl难道没有这个功能吗?【嫌弃脸】

python unicode编码转换中文_用Python将中文转换成拼音
python unicode编码转换中文_用Python将中文转换成拼音

然后呢,咱不就开始冲了嘛。嘿,突然发现看似寻常简单的需求,咋搞起来还有点费劲呢。

首先,吐槽某度。某度经验里说用getpy()函数就能取,结果.....em.....不行【我版本不对?打开方式不对?还是说这个函数不是内置函数需要自己写?不知道,它没说,没有用,反正我是不行......】

python unicode编码转换中文_用Python将中文转换成拼音

哎,算了,某度我都习惯了.....那我们去网页直翻吧。然后发现吧,网页可以转拼音,但就是会有各种各样的问题。要么有字数限制,要么翻出来的还带着声调......

python unicode编码转换中文_用Python将中文转换成拼音
python unicode编码转换中文_用Python将中文转换成拼音

行吧,我又服了,也懒得找了,咱自己动手搞吧。

python unicode编码转换中文_用Python将中文转换成拼音

接下来我们的重点来了,教你在5分钟内使用Python将汉字转换成拼音

第一步:去网上扒拉现成的

咳咳,对,我就是不要脸。造轮子是不可能造轮子的,只能去网上扒拉一些下来改改勉强生活啦。【野路子程序员必备能力之一:网上粘下来改】

python unicode编码转换中文_用Python将中文转换成拼音
python unicode编码转换中文_用Python将中文转换成拼音

诺,你看,我们已经成功了一半了,接下来改成适合我们需求的就行。

第二步:改轮子

我们的需要转换的数据比较多,所以呢我们增加一步去读一下Excel,然后再遍历一下名字那一列,这不就完活了嘛【野路子程序员必备能力之二:脸皮厚且无比的相信自己能改出来】

python unicode编码转换中文_用Python将中文转换成拼音

代码详解:

(1)老样子,导入第三方库

import pypinyinimport xlrd
           

(2)网上扒拉下来的轮子。两个函数,都是用作汉字转拼音的,一个带声调,一个不带声调

def pinyin(word):    s = ''    for i in pypinyin.pinyin(word, style=pypinyin.NORMAL):        s += ''.join(i)    return s# 带声调的(默认)def yinjie(word):    s = ''    # heteronym=True开启多音字    for i in pypinyin.pinyin(word, heteronym=True):        s = s + ''.join(i) + " "    return s
           

(3)自己改的轮子:读取Excel,循环汉字姓名列,然后转成拼音输出

def readexcel(file='file.xls'):    try:        data = xlrd.open_workbook(file)        return data    except Exception as e:        print(str(e))def excel_table_by_name(file=u'test.xlsx', colnameindex=0, by_name=u'Sheet1'):  # 修改自己路径    data = readexcel(file)    table = data.sheet_by_name(by_name)  # 获得表格    nRows = table.nrows  # 拿到总共行数    title_list = table.row_values(0)  # 标题字段    for i in range(1, nRows):  # 循环行数        row_vals = table.row_values(i)        for val in enumerate(row_vals):  # 对每列数据进行循环            print(val[1],pinyin(val[1]))if __name__ == "__main__":    excel_table_by_name()
           

第三步:运行!完事!奏乐!交作业啦!即可以选择要不要声调,又没有字数限制,还不用联网!【野路子程序员必备能力之三:程序能运行了一定要自嗨!】

python unicode编码转换中文_用Python将中文转换成拼音
python unicode编码转换中文_用Python将中文转换成拼音

最后的最后,感谢那些对小帅不离不弃的老baby们【尽管小帅这个更新频率确实感人....从周更、到月更、到季更】,但是我一直没有断更嘛,我还是有活跃度的嘛,你们要一直关注我哦,不要做渣粉~~

python unicode编码转换中文_用Python将中文转换成拼音

老baby们请点赞、关注、转发一波,你们的鼓励就是我最大的动力!噢啦~

python unicode编码转换中文_用Python将中文转换成拼音
python unicode编码转换中文_用Python将中文转换成拼音