本文记录使用 Python pypinyin 库获取中文声调拼音的方法。
pypinyin
将汉字转为拼音。可以用于汉字注音、排序、检索 。
特性
- 根据词组智能匹配最正确的拼音。
- 支持多音字。
- 简单的繁体支持,注音支持,威妥玛拼音支持。
- 支持多种不同拼音/注音风格。
相关地址
- Pypi地址:https://pypi.org/project/pypinyin/
- 开源地址:https://github.com/mozillazg/python-pinyin
- 文档地址: https://pypinyin.readthedocs.io/
安装
1 | pip install pypinyin |
---|
使用
引入库
12 | import pypinyinfrom pypinyin import pinyin |
---|
基础用法
向 pinyin
方法输入中文字符,可以自动识别多音字音调。
1234 | 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
识别多音字
1234 | pinyin('冯',heteronym=True)-->['féng', 'píng'] |
---|
生成一维嵌套列表
lazy_pinyin
方法可以直接输出一维列表
1234 | pypinyin.lazy_pinyin('我收集的材料散失了,散文没法写了')-->'wo', 'shou', 'ji', 'de', 'cai', 'liao', 'san', 'shi', 'le', ',', 'san', 'wen', 'mei', 'fa', 'xie', 'le' |
---|
音调风格
可以通过 style
参数控制输出拼音格式,常用的风格有下面这14种。
1234567891011121314151617181920212223242526272829303132333435363738394041 | #: 普通风格,不带声调。如: 中国 -> |
---|
示例:
1234 | 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
:
1234 | lazy_pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True)-->'yi1', 'shang5' |
---|
自定义拼音
如果对拼音返回的结果不满意可以自定义词语明确拼音内容,例如:
1234 | print(pypinyin.pinyin('又见苍岚'))-->['yòu', 'jiàn', 'cāng', 'lán'] |
---|
我想改 见
这个子的拼音,我就自定义一个字典,用 load_phrases_dict
方法加载进去:
12 | personalized_dict = {'又见苍岚': ['yòu', 'xiàn', 'cāng', 'lán']}pypinyin.load_phrases_dict(personalized_dict) |
---|
再次输出该词语的拼音就改过来了:
1234 | print(pypinyin.pinyin('又见苍岚'))-->['yòu', 'xiàn', 'cāng', 'lán'] |
---|
中英混搭
可以自动处理标点符号和中英文编码:
1234 | pypinyin.lazy_pinyin("我觉得OK!")) -->'wo', 'jue', 'de', 'OK!' |
---|
参考资料
- https://pypi.org/project/pypinyin/
- https://www.jianshu.com/p/483fc43bb662
- http://www.zzvips.com/article/204538.html
文章链接: https://cloud.tencent.com/developer/article/2303816