有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三种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