本文最后更新于:2023年12月5日 下午
本文记录使用 Python pypinyin 库获取中文声调拼音的方法。
pypinyin
将汉字转为拼音。可以用于汉字注音、排序、检索 。
特性
- 根据词组智能匹配最正确的拼音。
- 支持多音字。
- 简单的繁体支持,注音支持,威妥玛拼音支持。
- 支持多种不同拼音/注音风格。
相关地址
安装
使用
引入库
1 2
| import pypinyin from pypinyin import pinyin
|
基础用法
向 pinyin
方法输入中文字符,可以自动识别多音字音调。
1 2 3 4
| pinyin('他办事从不草率,效率一向很高')
--> [['tā'], ['bàn'], ['shì'], ['cóng'], ['bù'], ['cǎo'], ['shuài'], [','], ['xiào'], ['lǜ'], ['yí'], ['xiàng'], ['hěn'], ['gāo']]
|
多音字
在 pinyin
方法中加入参数 heteronym=True
识别多音字
1 2 3 4
| pinyin('冯',heteronym=True)
--> [['féng', 'píng']]
|
生成一维嵌套列表
lazy_pinyin
方法可以直接输出一维列表
1 2 3 4
| pypinyin.lazy_pinyin('我收集的材料散失了,散文没法写了')
--> ['wo', 'shou', 'ji', 'de', 'cai', 'liao', 'san', 'shi', 'le', ',', 'san', 'wen', 'mei', 'fa', 'xie', 'le']
|
音调风格
可以通过 style
参数控制输出拼音格式,常用的风格有下面这14种。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| NORMAL = 0
TONE = 1
TONE2 = 2
TONE3 = 8
INITIALS = 3
FIRST_LETTER = 4
FINALS = 5
FINALS_TONE = 6
FINALS_TONE2 = 7
FINALS_TONE3 = 9
BOPOMOFO = 10
BOPOMOFO_FIRST = 11
CYRILLIC = 12
CYRILLIC_FIRST = 13
|
示例:
1 2 3 4
| pinyin('我收集的材料散失了,散文没法写了', style=pypinyin.STYLE_TONE3)
--> [['wo3'], ['shou1'], ['ji2'], ['de'], ['cai2'], ['liao4'], ['san4'], ['shi1'], ['le'], [','], ['san3'], ['wen2'], ['mei2'], ['fa3'], ['xie3'], ['le']]
|
轻音
轻音默认不做声调标识,如果需要额外标注轻音为5,需要加入参数 neutral_tone_with_five=True
:
1 2 3 4
| lazy_pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True)
--> ['yi1', 'shang5']
|
自定义拼音
如果对拼音返回的结果不满意可以自定义词语明确拼音内容,例如:
1 2 3 4
| print(pypinyin.pinyin('又见苍岚'))
--> [['yòu'], ['jiàn'], ['cāng'], ['lán']]
|
我想改 见
这个子的拼音,我就自定义一个字典,用 load_phrases_dict
方法加载进去:
1 2
| personalized_dict = {'又见苍岚': [['yòu'], ['xiàn'], ['cāng'], ['lán']]} pypinyin.load_phrases_dict(personalized_dict)
|
再次输出该词语的拼音就改过来了:
1 2 3 4
| print(pypinyin.pinyin('又见苍岚'))
--> [['yòu'], ['xiàn'], ['cāng'], ['lán']]
|
中英混搭
可以自动处理标点符号和中英文编码:
1 2 3 4
| pypinyin.lazy_pinyin("我觉得OK!"))
--> ['wo', 'jue', 'de', 'OK!']
|
参考资料
文章链接:
https://www.zywvvd.com/notes/coding/python/python-pinyin-tone/python-pinyin-tone/