有时候在处理文件的时候,我们需要把中文名字转换成拼音,或者转换成拼音首字母。本文将介绍三种Python实现方式,最后给出批量操作的代码案例!1、xpinyin直入主题,Python汉字可以用xpinyin转拼音,直接pip安装即可👇pipinstallxpinyin-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com然后在xpinyin下导入拼音方法如下fromxpinyinimportPinyin首先尝试中文名字转拼音,p=Pinyin()result1=p.get_pinyin('叶伏天')result1结果如下:'ye-fu-tian'tone_marks可以显示声调result2=p.get_pinyin('叶伏天',tone_marks='marks')结果如下:'yè-fú-tiān'去掉空格👇s=result1.split('-')result3=s[0].capitalize()+''+''.join(s[1:]).capitalize()result3结果如下:'叶伏天'有时需要将中文名转换为首字母拼音,也很简单👇二、pypinyin另一种方法是使用pypinyin,也可以使用pip来安装#installpipinstallpypinyin-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com直接导入就可以了#128071;importpypinyin吧看一下中文名转换的实现方法result1=pypinyin.pinyin('YeTingyun',style=pypinyin.NORMAL)result1结果如下:[['ye'],['ting'],['yun']]启用复音实现声调result2=pypinyin.pinyin('叶听云',heteronym=True)result2result如下:[['yè','xié'],['tíng'],['yún']]因为返回的是嵌套列表,所以需要简单的调整在result_=[i[0]foriinresult1]result3=result_[0].capitalize()+''+''.join(result_[1:]).capitalize()下result3结果如下:'叶听云'启用和弦字模式那时我才知道'叶'也是一个复音字。查了资料,发现确实是这样,知识又增长了!下面是将中文名字转换为拼音首字母的方法。3、snownlp的最后一个方法是使用snownlp。如下:#installpipinstallslownlp-ihttp://pypi.douban.com/simple--trusted-hostpypi.douban.com#importfromsnownlpimportSnowNLP中文名转拼音#128071;s=SnowNLP('叶听云')s.pinyin的结果如下:['ye','ting','yun']listtostringresult4=s.pinyin[0].capitalize()+''+''.join(s.pinyin[1:]).capitalize()result4的结果如下:'YeTingyun'是中文名字转拼音的第一个字母4.批量将中文名字转拼音现在,掌握了基本用法之后,我们就可以使用批量操作来解放我们的handsimportpypinyinimportpandasassspddf=pd.read_excel('Studentlist_test.xls')df.head()首先导入一个学生列表如下:result=pypinyin.pinyin(i,style=pypinyin.NORMAL)result_=[i[0]foriinresult]result2=result_[0].capitalize()+''+''.join(result_[1:]).capitalize()result3=''.join([i[0].upper()foriinresult_])print(result2,i,sep='')pinyin_name.append(result2)first_pinyin.append(result3)df['英文名']=pinyin_namedf['拼音首字母']=first_pinyindf.head()或者转换为拼音首字母,运行结果如下:
