一、pypinyin
概述
Python 中提供了汉字转拼音的库,名字叫做 PyPinyin,可以用于汉字注音、排序、检索等等场合,是基于 hotto/pinyin 这个库开发的,一些站点链接如下:
它有这么几个特性:
根据词组智能匹配最正确的拼音。
支持多音字。
简单的繁体支持, 注音支持。
支持多种不同拼音/注音风格。
安装
通过 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ó
另外
网上还有另一种方法,可以参考以下代码:
二、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'
!该部分内容为之前从网络博客上收藏的,现找不到源地址。!