实用小技巧,Python一秒将全部中文姓名转为拼音!

共 2496字,需浏览 5分钟

 ·

2021-02-02 09:26

今日推文速看

三条:用通俗成语解释 Python 新手最容易犯的错误!
四条:数据可视化为你揭露,为什么现在的年轻人挣钱越多反而越穷?!
五条:2020十大最佳大数据分析工具,果断收藏


↑ 关注 + 星标 ,每天学Python新技能

后台回复【大礼包】送你Python自学大礼包


有时在处理文件时候,我们需要将中文姓名转换为拼音,或者是转换为拼音首字母,本文将介绍三种Python实现的方法,最后给一个批量操作的代码案例!

  一、xpinyin

开门见山,Python中文字转拼音可以使用xpinyin,直接使用pip安装即可👇

pip install xpinyin -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

接着导入xpinyin下的 Pinyin 方法如下

from xpinyin import Pinyin

首先试试中文名转拼音,

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

结果如下:
'Ye Futian'

有时需要中文名转拼音首字母,也很简单👇

  二、pypinyin

另一种方法是使用pypinyin,安装同样可以使用pip

# 安装
pip install pypinyin -i http://pypi.douban.com/simple --trusted-host pypi.douban.com

直接导入就行👇

import pypinyin

再来看看中文名转拼音的实现办法

result1 = pypinyin.pinyin('叶庭云', style=pypinyin.NORMAL)
result1

结果如下:

[['ye'], ['ting'], ['yun']]

启用多音节来实现声调


result2 = pypinyin.pinyin('叶庭云', heteronym=True)
result2

结果如下:

[['yè''xié'], ['tíng'], ['yún']]

因为返回的是一个嵌套的list,所以需要简单调整一下

result_ = [i[0for i in result1]
result3 = result_[0].capitalize() + ' ' + ''.join(result_[1:]).capitalize()
result3

结果如下:

'Ye Tingyun'

启用多音字模式时,竟然发现 ‘叶’ 也是多音字,查询了资料发现确实是这样,涨知识啦!

下面是中文名转拼音首字母的方法


  三、snownlp

最后一种办法是使用snownlp,同样的pip安装与导入如下:

# 安装
pip install snownlp -i http://pypi.douban.com/simple --trusted-host pypi.douban.com
# 导入
from snownlp import SnowNLP

中文名转拼音👇

s = SnowNLP('叶庭云')
s.pinyin

结果如下:

['ye''ting''yun']

将list转为字符串

result4 = s.pinyin[0].capitalize() + ' ' + ''.join(s.pinyin[1:]).capitalize()
result4

结果如下:

'Ye Tingyun'

最后是中文名转拼音首字母

  四、批量将中文名转换成拼音

现在,掌握了基本使用后,我们就能利用批量操作来解放双手

import pypinyin
import pandas as pd

df = pd.read_excel('学生名单_test.xls')
df.head()

先导入一份学生名单如下

下面是使用pypinyin批量将全部学生的中文姓名转换为拼音

pinyin_name = []
first_pinyin = []
for i in df['姓名']:
    result = pypinyin.pinyin(i, style=pypinyin.NORMAL)
    result_ = [i[0for 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()

或者是转换为拼音首字母,运行结果如下:

-END-

见面礼


码加我微信备注「三剑客」送你上图三本Python入门电子书 


推荐阅读


  1. 95后程序员月薪2万背着电脑送外卖,送单途中改Bug

  2. 重庆百架无人机集体撞楼,疑因程序写错,程序员背锅。。

  3. 厉害了!潘石屹Python考试首秀99分!

  4. 太赞!Python和Excel终于可以互通了


点分享
点收藏
点点赞
点在看
浏览 30
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报