我们可以利用python的PyPinyin库来获取汉字的拼音,我们先来写一个简单的案例

import pypinyin
print(pypinyin.pinyin( "小宁博客"))

# [['xiǎo'], ['níng'], ['bó'], ['kè']]

是不是很简单呢,我们只用了两行代码就实现了最基础的汉字转拼音。要是多音字怎么办呢?
这里PyPinyin也给我们做了处理了

from pypinyin import pinyin, lazy_pinyin, Style
x = "我画了一个长方形"
# 按照意思自动标识声调
print(pinyin(x)) # [['wǒ'], ['huà'], ['le'], ['yí'], ['gè'], ['cháng'], ['fāng'], ['xíng']]
# 列举出所有的声调
print(pinyin(x, heteronym=True)) # [['wǒ'], ['huà'], ['le', 'liǎo', 'liào'], ['yí'], ['gè'], ['cháng'], ['fāng'], ['xíng']]
# 忽略声调
print(lazy_pinyin(x)) #['wo', 'hua', 'le', 'yi', 'ge', 'chang', 'fang', 'xing']

我们来详细分析下这个函数pypinyin.pinyin(hans, style=<Style.TONE: 1>, heteronym=False, errors='default', strict=True)

  • 参数

    • hans汉字字符串。
    • style指定拼音风格,默认是 TONE风格。
    • errors指定如何处理没有拼音的字符。
    • heteronym指定是否启用多音字。
    • strict指定是否严格遵照《汉语拼音方案》来处理声母和韵母。

我们再来看下pypinyin.lazy_pinyin(hans, style=<Style.NORMAL: 0>, errors='default', strict=True)

  • 参数

    • hans汉字字符串。
    • style指定拼音风格,默认是 TONE风格。
    • errors指定如何处理没有拼音的字符。
    • strict指定是否严格遵照《汉语拼音方案》来处理声母和韵母。

自定义拼音库
自定义拼音库--载入用户自定义的单字拼音库`pypinyin.load_single_dict(pinyin_dict, style='default')

  • 参数

    • pinyin_dict (dict)单字拼音库。比如: {0x963F: u"ā,ē"}
    • stylepinyin_dict 参数值的拼音库风格. 支持 ‘default’, ‘tone2’

自定义拼音库--载入用户自定义的词语拼音库pypinyin.load_phrases_dict(phrases_dict, style='default')

  • 参数

    • phrases_dict (dict)词语拼音库。比如: {u"阿爸": [[u"ā"], [u"bà"]]}
    • style phrases_dict参数值的拼音库风格. 支持 ‘default’, ‘tone2’

附:风格列表

  • 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汉语拼音与俄语字母对照风格,仅首字母。如: 中国 -> ч г。
Last modification:October 19, 2020
If you think my article is useful to you, please feel free to appreciate