有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三种python实现的方法,最后给一个批量操作的代码案例!
一、xpinyin
开门见山,python中文字转拼音可以使用xpinyin,直接使用pip安装即可?
1
|
pip install xpinyin - i http: / / pypi.douban.com / simple - - trusted - host pypi.douban.com
|
接着导入xpinyin下的 pinyin 方法如下
1
|
from xpinyin import pinyin
|
首先试试中文名转拼音,
1
2
3
|
p = pinyin()
result1 = p.get_pinyin( '叶伏天' )
result1
|
结果如下:
1
|
'ye-fu-tian'
|
tone_marks
可以显示声调
1
|
result2 = p.get_pinyin( '叶伏天' , tone_marks = 'marks' )
|
结果如下:
1
|
'yè-fú-tiān'
|
去掉空格?
1
2
3
4
5
6
|
s = result1.split( '-' )
result3 = s[ 0 ].capitalize() + ' ' + ''.join(s[ 1 :]).capitalize()
result3
结果如下:
'ye futian'
|
有时需要中文名转拼音首字母,也很简单?
二、pypinyin
另一种方法是使用pypinyin,安装同样可以使用pip
1
2
|
# 安装
pip install pypinyin - i http: / / pypi.douban.com / simple - - trusted - host pypi.douban.com
|
直接导入就行?
1
|
import pypinyin
|
再来看看中文名转拼音的实现办法
1
2
|
result1 = pypinyin.pinyin( '叶庭云' , style = pypinyin.normal)
result1
|
结果如下:
1
|
[[ 'ye' ], [ 'ting' ], [ 'yun' ]]
|
启用多音节来实现声调
1
2
|
result2 = pypinyin.pinyin( '叶庭云' , heteronym = true)
result2
|
结果如下:
1
|
[[ 'yè' , 'xié' ], [ 'tíng' ], [ 'yún' ]]
|
因为返回的是一个嵌套的list,所以需要简单调整一下
1
2
3
|
result_ = [i[ 0 ] for i in result1]
result3 = result_[ 0 ].capitalize() + ' ' + ''.join(result_[ 1 :]).capitalize()
result3
|
结果如下:
1
|
'ye tingyun'
|
启用多音字模式时,竟然发现 ‘叶' 也是多音字,查询了资料发现确实是这样,涨知识啦!
下面是中文名转拼音首字母的方法
三、snownlp
最后一种办法是使用snownlp,同样的pip安装与导入如下:
1
2
3
4
|
# 安装
pip install snownlp - i http: / / pypi.douban.com / simple - - trusted - host pypi.douban.com
# 导入
from snownlp import snownlp
|
中文名转拼音?
1
2
|
s = snownlp( '叶庭云' )
s.pinyin
|
结果如下:
1
|
[ 'ye' , 'ting' , 'yun' ]
|
将list转为字符串
1
2
|
result4 = s.pinyin[ 0 ].capitalize() + ' ' + ''.join(s.pinyin[ 1 :]).capitalize()
result4
|
结果如下:
1
|
'ye tingyun'
|
最后是中文名转拼音首字母
四、批量将中文名转换成拼音
现在,掌握了基本使用后,我们就能利用批量操作来解放双手
1
2
3
4
5
|
import pypinyin
import pandas as pd
df = pd.read_excel( '学生名单_test.xls' )
df.head()
|
先导入一份学生名单如下
下面是使用pypinyin批量将全部学生的中文姓名转换为拼音
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
pinyin_name = []
first_pinyin = []
for i in df[ '姓名' ]:
result = pypinyin.pinyin(i, style = pypinyin.normal)
result_ = [i[ 0 ] for i in result]
result2 = result_[ 0 ].capitalize() + ' ' + ''.join(result_[ 1 :]).capitalize()
result3 = ''.join([i[ 0 ].upper() for i in result_])
print (result2, i, sep = ' ' )
pinyin_name.append(result2)
first_pinyin.append(result3)
df[ '英文名' ] = pinyin_name
df[ '拼音首字母' ] = first_pinyin
df.head()
|
或者是转换为拼音首字母,运行结果如下:
以上就是python 批量将中文名转换为拼音的详细内容,更多关于python 中文名转换为拼音的资料请关注服务器之家其它相关文章!
原文链接:https://cloud.tencent.com/developer/article/1756968