用python把中文汉字转成拼音,可以选择pypinyin库。
借助pypinyin库既可以实现多音字、又可以实现声调的标注等等,功能非常强大。
它的主要功能如下:
pypinyin.pinyin(hans, style=<Style.TONE:1>, heteronym=False, errors=’default’, strict=True)
其中参数hans是(unicode 字符串或字符串列表) – 汉字字符串 ( ‘你好吗’ ) 或列表 ( [‘你好’, ‘吗’] ).。
参数style是指定拼音风格,默认是TONE风格。
具体的风格可以有如下几种:
Style | 说明 |
NORMAL = 0 | 普通风格,不带声调。如: 中国 -> zhong guo |
TONE = 1 | 标准声调风格,拼音声调在韵母第一个字母上(默认风格)。如: 中国 -> zhōng guó |
TONE2 = 2 | 声调风格2,即拼音声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> zho1ng guo2 |
TONE3 = 8 | 声调风格3,即拼音声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> zhong1 guo2 |
INITIALS = 3 | 声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母,详见 #27)。如: 中国 -> zh g |
FIRST_LETTER = 4 | 首字母风格,只返回拼音的首字母部分。如: 中国 -> z g |
FINALS = 5 | 韵母风格,只返回各个拼音的韵母部分,不带声调。如: 中国 -> ong uo |
FINALS_TONE = 6 | 标准韵母风格,带声调,声调在韵母第一个字母上。如:中国 -> ōng uó |
FINALS_TONE2 = 7 | 韵母风格2,带声调,声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> o1ng uo2 |
FINALS_TONE3 = 9 | 韵母风格3,带声调,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> ong1 uo2 |
BOPOMOFO = 10 | 注音风格,带声调,阴平(第一声)不标。如: 中国 -> ㄓㄨㄥ ㄍㄨㄛˊ |
BOPOMOFO_FIRST = 11 | 注音风格,仅首字母。如: 中国 -> ㄓ ㄍ |
CYRILLIC = 12 | 汉语拼音与俄语字母对照风格,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> чжун1 го2 |
CYRILLIC_FIRST = 13 | 汉语拼音与俄语字母对照风格,仅首字母。如: 中国 -> ч г |
heteronym参数表示是否启用多音字识别。
strict参数表示是否严格遵照《汉语拼音方案》来处理声母和韵母。
errors参数指定当遇到非汉字字符时如何处理,方式如下:
default: 保留原始字符 |
gnore: 忽略该字符 |
replace: 替换为去掉 \u 的 unicode 编码字符串 (‘\u90aa’ => ’90aa’) |
以下是一些示例:
1.最原始的用法,返回二维列表
from pypinyin import pinyin, lazy_pinyin, Style
str1=”重阳”
list1=pinyin(str1)
print(list1)
上述代码将返回一个二维列表,如下所示:
[[‘chóng’], [‘yáng’]]
2.返回一维列表
如果要返回一个一维列表,可以使用如下的语法
pypinyin.lazy_pinyin(hans, style=<Style.NORMAL: 0>, errors=’default’, strict=True)
将汉字转换为拼音,返回不包含多音字结果的拼音列表。
与pinyin()的区别是返回的拼音是个字符串, 并且每个字只包含一个读音。
from pypinyin import pinyin,lazy_pinyin, Style
str1=”中心”
list1=lazy_pinyin(str1,Style.NORMAL,True)
print(list1)
返回的结果是
[‘zhong’, ‘xin’]
3.返回字符串
如果要直接将返回的拼音连接成字符串,则可以使用
pypinyin.slug(hans, style=<Style.NORMAL: 0>, heteronym=False, separator=’-‘, errors=’default’, strict=True)
将汉字转换为拼音,然后生成 slug 字符串。
其中separator参数指定了连接拼音时用的分隔符。
如下所示
import pypinyin
str1=”中国人”
list1=pypinyin.slug(str1,separator=” “)
print(list1)
返回结果为
zhong guo ren
发表评论