如何用python把中文汉字转成拼音?

用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(hansstyle=<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

       

发表评论