大噶好,我是郭小帅。
各位老baby们,我更新啦!感动吗?我连自己都被感动了!好久好久没更新了,我说我忘记公众号密码了你们信嘛?
最近有几位粉丝吧,干啥啥不行,催更第一名。行,我服了,我放下了手里的荣耀,放弃了我的队友们,更一波!!【这段时间流失了不少粉,扎铁啊老心们】

最近呢,工作上遇到了不少案例,我都会来给大家都掰扯掰扯。
就比如,最近有个老baby问我,你能不能把中文转换成拼音呀?当时我就在想,这是什么需求?为啥会有这种需求?是啥应用场景呢?【懵逼】
但是像我这么知【pa】书【re】达【ma】理【fan】的人,从来不问原因,干活就完了!
我就琢磨,这种需求应该网上有很多嘛,Execl难道没有这个功能吗?【嫌弃脸】
然后呢,咱不就开始冲了嘛。嘿,突然发现看似寻常简单的需求,咋搞起来还有点费劲呢。
首先,吐槽某度。某度经验里说用getpy()函数就能取,结果.....em.....不行【我版本不对?打开方式不对?还是说这个函数不是内置函数需要自己写?不知道,它没说,没有用,反正我是不行......】
哎,算了,某度我都习惯了.....那我们去网页直翻吧。然后发现吧,网页可以转拼音,但就是会有各种各样的问题。要么有字数限制,要么翻出来的还带着声调......
行吧,我又服了,也懒得找了,咱自己动手搞吧。
接下来我们的重点来了,教你在5分钟内使用Python将汉字转换成拼音
第一步:去网上扒拉现成的
咳咳,对,我就是不要脸。造轮子是不可能造轮子的,只能去网上扒拉一些下来改改勉强生活啦。【野路子程序员必备能力之一:网上粘下来改】
诺,你看,我们已经成功了一半了,接下来改成适合我们需求的就行。
第二步:改轮子
我们的需要转换的数据比较多,所以呢我们增加一步去读一下Excel,然后再遍历一下名字那一列,这不就完活了嘛【野路子程序员必备能力之二:脸皮厚且无比的相信自己能改出来】
代码详解:
(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()
第三步:运行!完事!奏乐!交作业啦!即可以选择要不要声调,又没有字数限制,还不用联网!【野路子程序员必备能力之三:程序能运行了一定要自嗨!】
最后的最后,感谢那些对小帅不离不弃的老baby们【尽管小帅这个更新频率确实感人....从周更、到月更、到季更】,但是我一直没有断更嘛,我还是有活跃度的嘛,你们要一直关注我哦,不要做渣粉~~
老baby们请点赞、关注、转发一波,你们的鼓励就是我最大的动力!噢啦~