安装: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