python 名字转拼音_Python拼音

  以前使用SQL实现的,效果还是不那么好。Python中提供了汉字转拼音的库,名字叫做PyPinyin,可以用于汉字注音、排序、检索、名片中文英文名字等等场合。

  它有这么几个特性:

    1.根据词组智能匹配最正确的拼音;

    2.支持多音字;

    3.简单的繁体支持, 注音支持;

    4.支持多种不同拼音/注音风格。

import pandas as pdname = pd.read_clipboard()import os os.chdir(r'C:\Users\Admin\Desktop')from pypinyin import pinyin, lazy_pinyin, Style,load_phrases_dict,load_single_dict

93e0ed88d689ded8f3168bceb96e0e30.png

  基本的拼音转换,方法非常简单,直接调用pinyin方法即可。结果会是一个二维的列表,每个元素都另外成了一个列表,其中包含了每个字的读音。

pinyin('孙少安') [['sūn'], ['shǎo'], ['ān']]

  添加heteronym参数并设置为True,启用多音字模式。

pinyin('孙少安', heteronym=True) [['sūn'], ['shǎo', 'shào'], ['ān']]

  不考虑音调的情况,不显示音调

lazy_pinyin('孙少安')   ['sun', 'shao', 'an']

【风格转换】

  可以对结果进行一些风格转换,比如不带声调风格、标准声调风格、声调在拼音之后、声调在韵母之后、注音风格等等。

  普通风格(NORMAL=0),不带声调。如:孙少安->['sun', 'shao', 'an']

lazy_pinyin('孙少安', style=Style.NORMAL)Out[12]: ['sun', 'shao', 'an']

  标准声调风格(TONE = 1),拼音声调在韵母第一个字母上(默认风格)。如:孙少安->['sūn', 'shǎo', 'ān']

lazy_pinyin('孙少安', style=Style.TONE)Out[13]: ['sūn', 'shǎo', 'ān']

  声调风格2(TONE2 = 2),即拼音声调在各个韵母之后,用数字 [1-4] 进行表示。如:孙少安->['su1n', 'sha3o', 'a1n']

lazy_pinyin('孙少安', style=Style.TONE2)Out[14]: ['su1n', 'sha3o', 'a1n']

  声调风格3(TONE3 = 8),即拼音声调在各个拼音之后,用数字 [1-4] 进行表示。如:孙少安->['sun1', 'shao3', 'an1']

lazy_pinyin('孙少安', style=Style.TONE3)Out[15]: ['sun1', 'shao3', 'an1']

  声母风格(INITIALS = 3),只返回各个拼音的声母部分(注:有的拼音没有声母,详见 `#27`_)。如:孙少安->['s', 'sh', '']

lazy_pinyin('孙少安', style=Style.INITIALS)Out[16]: ['s', 'sh', '']

  首字母风格(FIRST_LETTER = 4),只返回拼音的首字母部分。如:孙少安->['s', 's', 'a']

azy_pinyin('孙少安', style=Style.FIRST_LETTER)Out[17]: ['s', 's', 'a']

  韵母风格(FINALS = 5),只返回各个拼音的韵母部分,不带声调。如:孙少安->['uen', 'ao', 'an']

lazy_pinyin('孙少安', style=Style.FINALS)Out[18]: ['uen', 'ao', 'an']

  标准韵母风格(FINALS_TONE = 6),带声调,声调在韵母第一个字母上。如:孙少安->['ūen', 'ǎo', 'ān']

lazy_pinyin('孙少安', style=Style.FINALS_TONE)Out[19]: ['ūen', 'ǎo', 'ān']

  韵母风格2(FINALS_TONE2 = 7),带声调,声调在各个韵母之后,用数字 [1-4] 进行表示。如:孙少安->['u1en', 'a3o', 'a1n']

lazy_pinyin('孙少安', style=Style.FINALS_TONE2)Out[20]: ['u1en', 'a3o', 'a1n']

  韵母风格3(FINALS_TONE3 = 9),带声调,声调在各个拼音之后,用数字 [1-4] 进行表示。如:孙少安->['uen1', 'ao3', 'an1']

lazy_pinyin('孙少安', style=Style.FINALS_TONE3)Out[21]: ['uen1', 'ao3', 'an1']

  注音风格(BOPOMOFO = 10),带声调,阴平(第一声)不标。如:孙少安->['ㄙㄨㄣ', 'ㄕㄠˇ', 'ㄢ']

lazy_pinyin('孙少安', style=Style.BOPOMOFO)Out[22]: ['ㄙㄨㄣ', 'ㄕㄠˇ', 'ㄢ']

  注音风格(BOPOMOFO_FIRST = 11),仅首字母。如:孙少安->['ㄙ', 'ㄕ', 'ㄢ']

lazy_pinyin('孙少安', style=Style.BOPOMOFO_FIRST)Out[23]: ['ㄙ', 'ㄕ', 'ㄢ']

  汉语拼音与俄语字母对照风格(CYRILLIC = 12),声调在各个拼音之后,用数字 [1-4] 进行表示。如:孙少安->['сунь1', 'шао3', 'ань1']

lazy_pinyin('孙少安', style=Style.CYRILLIC)Out[24]: ['сунь1', 'шао3', 'ань1']

  汉语拼音与俄语字母对照风格(CYRILLIC_FIRST = 13),仅首字母。如:孙少安->['с', 'ш', 'а']

lazy_pinyin('孙少安', style=Style.CYRILLIC_FIRST)Out[25]: ['с', 'ш', 'а']

【自定义拼音库】

  可以自定义自己的拼音库,有load_single_dict和load_phrases_dict方法。

  比如刚才我们看到 “少安” 两个字的发音默认返回的是'shǎo', 'ān',我们想默认返回['shào'], ['píng'],那可以这么做:

personalized_dict = {'少平': [['shào'], ['píng']],                     '少安': [['shào'], ['ān']]}load_phrases_dict(personalized_dict)pinyin('孙少安')Out[26]: [['sūn'], ['shào'], ['ān']]

【案例】

  把名字转成拼音格式,和英文名字格式。就拿最近看完的《平凡的世界》里面的人名来举例,考虑到复姓的问题,加了个复姓的名字进去。

def pyin1(name):    s = pinyin(name)    if len(s) == 3:        s0 = s[0][0]+" "+s[1][0]+' '+s[2][0]    elif len(s) == 2:        s0 = s[0][0]+" "+s[1][0]    elif len(s) == 4:        s0 = s[0][0]+" "+s[1][0]+' '+s[2][0]+' '+s[3][0]    return s0
def yinwen(name):    yw = lazy_pinyin(name)     if len(yw) == 3:        yw0 = yw[0]        yw0 = yw0.capitalize()        yw1 = yw[1]+yw[2]        yw1 = yw1.capitalize()        return yw0+' '+yw1    elif len(yw) == 2:        yw0 = yw[0]        yw0 = yw0.capitalize()        yw1 = yw[1]        yw1 = yw1.capitalize()        return yw0+' '+yw1    elif len(yw) == 4:        yw0 = yw[0]+yw[1]        yw0 = yw0.capitalize()        yw1 = yw[2]+yw[3]        yw1 = yw1.capitalize()        return yw0+' '+yw1
name['pinyin'] = name['name'].apply(pyin1)name['yingwen'] = name['name'].apply(yinwen)name.to_excel('name.xlsx',index=False)

8906c914849c8179222da7c7abc3f96c.png

703f1e921c018b8497c7ef2f819904c0.gif

End

be9d70afbfb212139659a082b8b54cf4.gif

◆  【可视化】Matplotlib_Scatter ◆  【可视化】Matplotlib_Piechart ◆  【可视化】seaborn_heatmap
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值