一、pypinyin
概述
Python 中提供了汉字转拼音的库,名字叫做 PyPinyin,可以用于汉字注音、排序、检索等等场合,是基于 hotto/pinyin 这个库开发的,一些站点链接如下:
- GitHub: https://github.com/mozillazg/python-pinyin
- 文档:https://pypinyin.readthedocs.io/zh_CN/master/
- PyPi:https://pypi.org/project/pypinyin/
它有这么几个特性:
- 根据词组智能匹配最正确的拼音。
- 支持多音字。
- 简单的繁体支持, 注音支持。
- 支持多种不同拼音/注音风格。
安装
通过 pip 安装即可:
pip install pypinyin
安装完成之后导入一下这个库
import pypinyin
用法
from pypinyin import pinyin print(pinyin('中国'))
运行结果:
[['zhōng'], ['guó']]
可以看到结果会是一个二维的列表,每个元素都另外成了一个列表,其中包含了每个字的读音。如果想要不带声调的只需要将style参数设置为 style=pypinyin.NORMAL 即可。
怎么更美观的输出拼音呢?以下代码仅供参考。
import pypinyin # 不带声调的(style=pypinyin.NORMAL) def py1(word): s = '' for i in pypinyin.pinyin(word, style=pypinyin.NORMAL): s = s + ''.join(i) + " " return s # 带声调的(默认) def py2(word): s = '' for i in pypinyin.pinyin(word): s = s + ''.join(i) + " " return s if __name__ == "__main__": print(py1("中华人民共和国")) print(py2("中华人民共和国"))
输出结果:
zhong hua ren min gong he guo zhōng huá rén mín gòng hé guó
更多详细的用法,请查阅官方文档:https://pypinyin.readthedocs.io/zh_CN/master/
另外
网上还有另一种方法,可以参考以下代码:
二、xpinyin
>>> from xpinyin import Pinyin >>> p = Pinyin() >>> # default splitter is `-` >>> p.get_pinyin(u"上海") 'shang-hai' >>> # show tone marks >>> p.get_pinyin(u"上海", show_tone_marks=True) 'shàng-hǎi' >>> # remove splitter >>> p.get_pinyin(u"上海", '') 'shanghai' >>> # set splitter as whitespace >>> p.get_pinyin(u"上海", ' ') 'shang hai' >>> p.get_initial(u"上") 'S' >>> p.get_initials(u"上海") 'S-H' >>> p.get_initials(u"上海", u'') 'SH' >>> p.get_initials(u"上海", u' ') 'S H'
!该部分内容为之前从网络博客上收藏的,现找不到源地址。!