将汉语转为拼音。可以用于汉字注音、排序、检索。
基于 hotoo/node-pinyin 开发。
>>> from pypinyin import pinyin, lazy_pinyin
>>> import pypinyin
>>> pinyin(u'中心')
[[u'zh\u014dng'], [u'x\u012bn']]
>>> pinyin(u'中心', heteronym=True) # 启用多音字模式
[[u'zh\u014dng', u'zh\xf2ng'], [u'x\u012bn']]
>>> pinyin(u'中心', style=pypinyin.STYLE_INITIALS) # 设置拼音风格
[['zh'], ['x']]
>>> lazy_pinyin(u'中心')
['zhong', 'xin']
命令行工具:
$ pypinyin 音乐
yīn yuè
$ pypinyin -h
如果安装了 jieba 分词模块,程序会自动调用。
使用其他分词模块:
安装分词模块,比如 pip install snownlp ;
使用经过分词处理的字符串列表作参数:
>> from pypinyin import lazy_pinyin, STYLE_TONE2
>> from snownlp import SnowNLP
>> hans = u'音乐123'
>>
>> lazy_pinyin(hans, style=STYLE_TONE2)
[u'yi1n', u'le4', u'1', u'2', u'3']
>>
>> hans_seg = SnowNLP(hans).words # 分词处理
>> hans_seg
[u'\u97f3\u4e50', u'123']
>> lazy_pinyin(hans_seg, style=STYLE_TONE2)
[u'yi1n', u'yue4', u'123']
如果对结果不满意,可以通过自定义拼音库的方式修正结果:
>> from pypinyin import lazy_pinyin, load_phrases_dict, STYLE_TONE2
>> hans = u'桔子'
>>
>> lazy_pinyin(hans, style=STYLE_TONE2)
[u'jie2', u'zi3']
>>
>> load_phrases_dict({u'桔子': [[u'jú'], [u'zǐ']]})
>> lazy_pinyin(hans, style=STYLE_TONE2)
[u'ju2', u'zi3']
拼音风格:
pypinyin.NORMAL | 普通风格(0),不带声调。如: pin yin |
pypinyin.TONE | 声调风格(1),拼音声调在韵母第一个字母上(默认风格)。如: pīn yīn |
pypinyin.TONE2 | 声调风格2(2),即拼音声调在各个拼音之后,用数字 [0-4] 进行表示。如: pi1n yi1n |
pypinyin.INITIALS | 声母风格(3),只返回各个拼音的声母部分。如: 中国 的拼音 zh g |
pypinyin.FIRST_LETTER | 首字母风格(4),只返回拼音的首字母部分。如: p y |
pypinyin.FINALS | 韵母风格1(5),只返回各个拼音的韵母部分,不带声调。如: ong uo |
pypinyin.FINALS_TONE | 韵母风格2(6),带声调,声调在韵母第一个字母上。如: ōng uó |
pypinyin.FINALS_TONE2 | 韵母风格2(7),带声调,声调在各个拼音之后,用数字 [0-4] 进行表示。如: o1ng uo2 |
将汉字转换为拼音.
Parameters: |
|
---|---|
Returns: | 拼音列表 |
Return type: | list |
Usage:
>>> from pypinyin import pinyin
>>> import pypinyin
>>> pinyin(u'中心')
[[u'zhōng'], [u'xīn']]
>>> pinyin(u'中心', heteronym=True) # 启用多音字模式
[[u'zhōng', u'zhòng'], [u'xīn']]
>>> pinyin(u'中心', style=pypinyin.INITIALS) # 设置拼音风格
[[u'zh'], [u'x']]
>>> pinyin(u'中心', style=pypinyin.TONE2)
[[u'zho1ng'], [u'xi1n']]
生成 slug 字符串.
Parameters: |
|
---|---|
Returns: | slug 字符串. |
不包含多音字的拼音列表.
与 pinyin() 的区别是返回的拼音是个字符串,并且每个字只包含一个读音.
Parameters: |
|
---|---|
Returns: | 拼音列表(e.g. ['zhong', 'guo', 'ren']) |
Return type: | list |
Usage:
>>> from pypinyin import lazy_pinyin
>>> import pypinyin
>>> lazy_pinyin(u'中心')
[u'zhong', u'xin']
>>> lazy_pinyin(u'中心', style=pypinyin.TONE)
[u'zhōng', u'xīn']
>>> lazy_pinyin(u'中心', style=pypinyin.INITIALS)
[u'zh', u'x']
>>> lazy_pinyin(u'中心', style=pypinyin.TONE2)
[u'zho1ng', u'xi1n']
增加 lazy_pinyin
>>> lazy_pinyin(u'中心')
['zhong', 'xin']
修复首字母风格无法正确处理只有韵母的汉字
完善对中英文混合字符串的支持:
>> pypinyin.pinyin(u'你好abc')
[[u'n\u01d0'], [u'h\u01ceo'], [u'abc']]