使用Python,pypinyin将汉字转为带音调,首字母等多种风格的拼音,自动学习生字词
使用Python,pypinyin将汉字转为带音调,首字母等多种风格的拼音,自动学习生字词
- 1. 效果图
- 2. 安装及支持的音调分类
- 3. 源码
- 参考
这篇博客将介绍如何使用Python,pypinyin将汉字转为带音调的拼音,自动学习生字词,现在微读有个Ai文书,实现了这个功能,但是每次都要查询完还得标记下把拼音带音调打出来,有点费劲。怎么自动根据生字来查询到它对应的拼音呢?
pypinyin可以实现。
1. 效果图
原始数组里的汉字及转换标准声调拼音后结果如下:
单个字转换各种风格的声调后拼音如下:
2. 安装及支持的音调分类
- 安装pypinyin
pip install pypinyin
-
看源码constants.py可以看到其支持的全量声调分类:
- Style.NORMAL是标准拼音无声调
- Style.TONE是标准带声调
- Style.TONE2是拼音声调在各个韵母之后
- Style.TONE3是拼音声调在各个拼音之后
- Style.INITIALS是拼音只返回首字母等等,其他的含义可以看下图
constants.py源码如下:
3. 源码
'''
hz2pinyin.py
汉字转拼音带声调
'''
from pypinyin import pinyin, Style
def to_pinyin_with_tone(text, style=Style.TONE):
'''汉字转换为拼音,默认为标准带音调
"""拼音风格"""
#: 普通风格,不带声调。如: 中国 -> ``zhong guo``
NORMAL = 0
#: 标准声调风格,拼音声调在韵母第一个字母上(默认风格)。如: 中国 -> ``zhōng guó``
TONE = 1
#: 声调风格2,即拼音声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> ``zho1ng guo2``
TONE2 = 2
#: 声调风格3,即拼音声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> ``zhong1 guo2``
TONE3 = 8
#: 声母风格,只返回各个拼音的声母部分(注:有的拼音没有声母,详见 `#27`_)。如: 中国 -> ``zh g``
INITIALS = 3
#: 首字母风格,只返回拼音的首字母部分。如: 中国 -> ``z g``
FIRST_LETTER = 4
#: 韵母风格,只返回各个拼音的韵母部分,不带声调。如: 中国 -> ``ong uo``
FINALS = 5
#: 标准韵母风格,带声调,声调在韵母第一个字母上。如:中国 -> ``ōng uó``
FINALS_TONE = 6
#: 韵母风格2,带声调,声调在各个韵母之后,用数字 [1-4] 进行表示。如: 中国 -> ``o1ng uo2``
FINALS_TONE2 = 7
#: 韵母风格3,带声调,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> ``ong1 uo2``
FINALS_TONE3 = 9
#: 注音风格,带声调,阴平(第一声)不标。如: 中国 -> ``ㄓㄨㄥ ㄍㄨㄛˊ``
BOPOMOFO = 10
#: 注音风格,仅首字母。如: 中国 -> ``ㄓ ㄍ``
BOPOMOFO_FIRST = 11
#: 汉语拼音与俄语字母对照风格,声调在各个拼音之后,用数字 [1-4] 进行表示。如: 中国 -> ``чжун1 го2``
CYRILLIC = 12
#: 汉语拼音与俄语字母对照风格,仅首字母。如: 中国 -> ``ч г``
CYRILLIC_FIRST = 13
#: 威妥玛拼音/韦氏拼音/威式拼音风格,无声调
WADEGILES = 14
'''
return ' '.join([item[0] for item in pinyin(text, style=style)])
def processs_hz2pinyin():
data_list = ['隰', '漉', '籊', '滺', '郄', '瑳']
tone_dict = {
'默认无声调': Style.NORMAL,
'标准声调': Style.TONE,
'标准声调2声调在韵母后': Style.TONE2,
'标准声调3声调在各个拼音后': Style.TONE3,
'声母风格': Style.INITIALS,
'首字母风格': Style.FIRST_LETTER,
'韵母风格': Style.FINALS,
'标准韵母风格': Style.FINALS_TONE,
'韵母风格2声调在韵母后': Style.FINALS_TONE2,
'韵母风格3声调在各个拼音后': Style.FINALS_TONE3,
'注音风格': Style.BOPOMOFO,
'注音风格仅首字母': Style.BOPOMOFO_FIRST,
'汉语拼音与俄语字母对照风格,声调在各个拼音之后': Style.CYRILLIC,
'汉语拼音与俄语字母对照风格,仅首字母': Style.CYRILLIC_FIRST,
'威妥玛拼音/韦氏拼音/威式拼音风格,无声调': Style.WADEGILES
}
for line in data_list:
for key, val in tone_dict.items():
print('\t', line, key + ': ', to_pinyin_with_tone(line, style=val))
print()
process_list = ['%s(%s)' % (line, to_pinyin_with_tone(line)) for line in data_list]
process_list = [str(index + 1) + '. ' + (line.replace('1. ', '')) for index, line in enumerate(process_list)]
print('origin: ', data_list)
print('\n'.join(process_list))
processs_hz2pinyin()
参考
- https://blog.csdn.net/haibo2144/article/details/144231857