API

拼音风格

class pypinyin.Style(value, names=<not given>, *values, module=None, qualname=None, type=None, start=1, boundary=None)[源代码]

拼音风格

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

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

汉语拼音与俄语字母对照风格,仅首字母。如: 中国 -> ч г

WADEGILES = 14

威妥玛拼音/韦氏拼音/威式拼音风格,无声调

核心 API

pypinyin.pinyin(hans, style=Style.TONE, heteronym=False, errors='default', strict=True, v_to_u=False, neutral_tone_with_five=False)[源代码]

将汉字转换为拼音,返回汉字的拼音列表。

参数:
  • hans (unicode 字符串或字符串列表) – 汉字字符串( '你好吗' )或列表( ['你好', '吗'] ). 可以使用自己喜爱的分词模块对字符串进行分词处理, 只需将经过分词处理的字符串列表传进来就可以了。

  • style – 指定拼音风格,默认是 TONE 风格。 更多拼音风格详见 Style

  • errors

    指定如何处理没有拼音的字符。详见 处理不包含拼音的字符

    • 'default': 保留原始字符

    • 'ignore': 忽略该字符

    • 'replace': 替换为去掉 \u 的 unicode 编码字符串 ('\u90aa' => '90aa')

    • callable 对象: 回调函数之类的可调用对象。

  • heteronym – 是否启用多音字

  • strict – 只获取声母或只获取韵母相关拼音风格的返回结果 是否严格遵照《汉语拼音方案》来处理声母和韵母, 详见 strict 参数的影响

  • v_to_u (bool) – 无声调相关拼音风格下的结果是否使用 ü 代替原来的 v 当为 False 时结果中将使用 v 表示 ü

  • neutral_tone_with_five (bool) – 声调使用数字表示的相关拼音风格下的结果是否 使用 5 标识轻声

返回:

拼音列表

返回类型:

list

抛出:

AssertionError – 当传入的字符串不是 unicode 字符时会抛出这个异常

Usage:

>>> from pypinyin import pinyin, Style
>>> import pypinyin
>>> pinyin('中心')
[['zhōng'], ['xīn']]
>>> pinyin('中心', heteronym=True)  # 启用多音字模式
[['zhōng', 'zhòng'], ['xīn']]
>>> pinyin('中心', style=Style.FIRST_LETTER)  # 设置拼音风格
[['z'], ['x']]
>>> pinyin('中心', style=Style.TONE2)
[['zho1ng'], ['xi1n']]
>>> pinyin('中心', style=Style.CYRILLIC)
[['чжун1'], ['синь1']]
>>> pinyin('战略', v_to_u=True, style=Style.NORMAL)
[['zhan'], ['lüe']]
>>> pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True)
[['yi1'], ['shang5']]
pypinyin.lazy_pinyin(hans, style=Style.NORMAL, errors='default', strict=True, v_to_u=False, neutral_tone_with_five=False, tone_sandhi=False)[源代码]

将汉字转换为拼音,返回不包含多音字结果的拼音列表.

pinyin() 的区别是返回的拼音是个字符串, 并且每个字只包含一个读音.

参数:
  • hans (unicode 字符串或字符串列表) – 汉字字符串( '你好吗' )或列表( ['你好', '吗'] ). 可以使用自己喜爱的分词模块对字符串进行分词处理, 只需将经过分词处理的字符串列表传进来就可以了。

  • style – 指定拼音风格,默认是 NORMAL 风格。 更多拼音风格详见 Style

  • errors – 指定如何处理没有拼音的字符,详情请参考 pinyin()

  • strict – 只获取声母或只获取韵母相关拼音风格的返回结果 是否严格遵照《汉语拼音方案》来处理声母和韵母, 详见 strict 参数的影响

  • v_to_u (bool) – 无声调相关拼音风格下的结果是否使用 ü 代替原来的 v 当为 False 时结果中将使用 v 表示 ü

  • neutral_tone_with_five (bool) – 声调使用数字表示的相关拼音风格下的结果是否 使用 5 标识轻声

  • tone_sandhi (bool) – 是否按照声调 变调规则 对拼音进行处理 (使用预先通过分词库进行过分词后的结果作为 hans 参数的值效果会更好,因为变调效果依赖分词效果)

返回:

拼音列表(e.g. ['zhong', 'guo', 'ren'])

返回类型:

list

抛出:

AssertionError – 当传入的字符串不是 unicode 字符时会抛出这个异常

Usage:

>>> from pypinyin import lazy_pinyin, Style
>>> import pypinyin
>>> lazy_pinyin('中心')
['zhong', 'xin']
>>> lazy_pinyin('中心', style=Style.TONE)
['zhōng', 'xīn']
>>> lazy_pinyin('中心', style=Style.FIRST_LETTER)
['z', 'x']
>>> lazy_pinyin('中心', style=Style.TONE2)
['zho1ng', 'xi1n']
>>> lazy_pinyin('中心', style=Style.CYRILLIC)
['чжун1', 'синь1']
>>> lazy_pinyin('战略', v_to_u=True)
['zhan', 'lüe']
>>> lazy_pinyin('衣裳', style=Style.TONE3, neutral_tone_with_five=True)
['yi1', 'shang5']
>>> lazy_pinyin('你好', style=Style.TONE2, tone_sandhi=True)
['ni2', 'ha3o']
pypinyin.load_single_dict(pinyin_dict, style='default')[源代码]

载入用户自定义的单字拼音库

参数:
  • pinyin_dict (dict) – 单字拼音库。比如: {0x963F: u"ā,ē"}

  • style – pinyin_dict 参数值的拼音库风格. 支持 ‘default’, ‘tone2’

pypinyin.load_phrases_dict(phrases_dict, style='default')[源代码]

载入用户自定义的词语拼音库

参数:
  • phrases_dict (dict) – 词语拼音库。比如: {u"阿爸": [[u"ā"], [u"bà"]]}

  • style – phrases_dict 参数值的拼音库风格. 支持 ‘default’, ‘tone2’

pypinyin.slug(hans, style=Style.NORMAL, heteronym=False, separator='-', errors='default', strict=True)[源代码]

将汉字转换为拼音,然后生成 slug 字符串.

参数:
  • hans (unicode 字符串或字符串列表) – 汉字字符串( '你好吗' )或列表( ['你好', '吗'] ). 可以使用自己喜爱的分词模块对字符串进行分词处理, 只需将经过分词处理的字符串列表传进来就可以了。

  • style – 指定拼音风格,默认是 NORMAL 风格。 更多拼音风格详见 Style

  • heteronym – 是否启用多音字

  • separator – 两个拼音间的分隔符/连接符

  • errors – 指定如何处理没有拼音的字符,详情请参考 pinyin()

  • strict – 只获取声母或只获取韵母相关拼音风格的返回结果 是否严格遵照《汉语拼音方案》来处理声母和韵母, 详见 strict 参数的影响

返回:

slug 字符串.

抛出:

AssertionError – 当传入的字符串不是 unicode 字符时会抛出这个异常

>>> import pypinyin
>>> from pypinyin import Style
>>> pypinyin.slug('中国人')
'zhong-guo-ren'
>>> pypinyin.slug('中国人', separator=' ')
'zhong guo ren'
>>> pypinyin.slug('中国人', style=Style.FIRST_LETTER)
'z-g-r'
>>> pypinyin.slug('中国人', style=Style.CYRILLIC)
'чжун1-го2-жэнь2'

注册新的拼音风格

pypinyin.style.register(style, func=None)[源代码]

注册一个拼音风格实现。 自定义的函数应当使用 **kwargs 来兼容后续可能会新增的关键字参数, 当前默认会传递如下参数:

  • pinyin: 原始有声调的单个拼音

  • strict: 是否开启 strict 模式

  • han: 当前拼音对应的原始汉字

@register('echo')
def echo(pinyin, **kwargs):
    return pinyin

# or
register('echo', echo)