pypinyin: 汉字转换为拼音

安装:pip install pypinyin

直接上例子:

import pypinyin
from pypinyin import Style


# def pinyin(hans, style=Style.TONE, heteronym=False, errors='default', strict=True)
# 结果会是一个二维的列表,每个元素都另外成了一个列表,其中包含了每个字的读音( pinyin 方法默认使用了 TONE 的风格,即有声调的风格模式)

word1 = pypinyin.pinyin('你好')
print(word1)
# [['nǐ'], ['hǎo']]

# -----------------------------------------------------

#  启用多音字模式
word2 = pypinyin.pinyin('朝阳', heteronym=True)
print(word2) 
# [['zhāo', 'cháo'], ['yáng']]

# 这里的多音词并不是指单个字的多音字,而是这个词语本身就有两种读音
word3 = pypinyin.pinyin('大夫', heteronym=True)
print(word3)
# [['dài'], ['fū']]; 此处就不会输出“da” 因为大夫只有一个读法

# ----------------------------------------------------
print(pypinyin.pinyin('朝阳',style=Style.TONE))                   #[['zhāo'], ['yáng']]
print(pypinyin.pinyin('朝阳',style=Style.TONE2))                  #[['zha1o'], ['ya2ng']]
print(pypinyin.pinyin('朝阳',style=Style.TONE3, heteronym=True))  #[['zhao1', 'chao2'], ['yang2']]
print(pypinyin.pinyin('朝阳',style=Style.FIRST_LETTER))           #[['z'], ['y']]  #首字母风格,只返回拼音的首字母部分
print(pypinyin.pinyin('朝阳',style=Style.INITIALS))               #[['zh'], ['']]       #声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母)


# ==================================================================================

# def lazy_pinyin(hans, style=Style.NORMAL, errors='default', strict=True)

# 有没有一个方法直接给我们一个一维列表呢,我们可以使用 lazy_pinyin 方法来实现(lazy_pinyin 方法默认使用了 NORMAL,即无声调的风格模式);不考虑多音字;
word4 = pypinyin.lazy_pinyin('你好')
print(word4)
# ['ni', 'hao']

# ----------------------------------------------------
print(pypinyin.lazy_pinyin('中国', style=Style.NORMAL))           #['zhong', 'guo']
print(pypinyin.lazy_pinyin('中国', style=Style.TONE2))            #['zho1ng', 'guo2']
print(pypinyin.lazy_pinyin('中国', style=Style.TONE3))            #['zhong1', 'guo2']
print(pypinyin.lazy_pinyin('中国', style=Style.FIRST_LETTER))     #['z', 'g']     #首字母风格,只返回拼音的首字母部分
print(pypinyin.lazy_pinyin('中国', style=Style.INITIALS))         #['zh', 'g']   #声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母)
print(pypinyin.lazy_pinyin('战略', v_to_u=True))                  #['zhan', 'lüe']  ## 不使用 v 表示 ü
print(pypinyin.lazy_pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True))     #['yi1', 'shang5']    # 使用 5 标识轻声
#-----------------------------------------------------


#===============================================================================
# 处理不包含拼音的字符
print(pypinyin.pinyin('你好☆☆'))                              #[['nǐ'], ['hǎo'], ['☆☆']]   #默认不作任何处理,原样返回;
print(pypinyin.pinyin('你好☆☆', errors='ignore'))             # [['nǐ'], ['hǎo']]   #忽略
print(pypinyin.pinyin('你好☆☆',errors='replace'))             #[['nǐ'], ['hǎo'], ['26062606']]   # 替换为去掉 \u 的 unicode 编码

#callable 对象 : 提供一个回调函数,接受无拼音字符(串)作为参数, 支持的返回值类型: unicode 或 list 或 None 。:
print(pypinyin.pinyin('你好☆☆', errors=lambda x: 'star'))     #[['nǐ'], ['hǎo'], ['star']]
print(pypinyin.pinyin('你好☆☆', errors=lambda x: None))       #[['nǐ'], ['hǎo']]

# 返回值类型为 list 时,会自动 expend list
print(pypinyin.pinyin('你好☆☆', errors=lambda x: ['star' for _ in x]))                            #[['nǐ'], ['hǎo'], ['star'], ['star']]
print(pypinyin.pinyin('你好☆☆', heteronym=True, errors=lambda x: [['star', '☆'] for _ in x]))     #[['nǐ'], ['hǎo'], ['star', '☆'], ['star', '☆']]

参考:
Python中拼音库PyPinyin的使用
pypinyin 0.47.1

posted @ 2022-09-27 16:08  温小皮  阅读(169)  评论(0编辑  收藏  举报