Changelog

0.34.0 (2018-12-08)

不兼容旧版的变更

  • [Changed]errors 参数的值是个回调对象并且返回值是个 list 时, 会使用这个 list 来 extend 结果 list (via #147 . Thanks @howl-anderson )

    # 更新前
    >>> pinyin('你好☆☆', errors=lambda x: ['star' for _ in x])
    [['nǐ'], ['hǎo'], ['star', 'star']]
    
    # 更新后
    >>> pinyin('你好☆☆', errors=lambda x: ['star' for _ in x])
    [['nǐ'], ['hǎo'], ['star'], ['star']]
    

详见文档: https://pypinyin.readthedocs.io/zh_CN/develop/usage.html#handle-no-pinyin

0.33.2 (2018-11-03)

  • [Bugfixed] 修复 struct=True 时韵母相关风格下没有正确处理韵母 üan 的问题。

0.33.1 (2018-09-23)

0.33.0 (2018-08-05)

  • [Bugfixed] 修复命令行程序在 sys.stdin.encodingNone 时无法正常工作的问题。
  • [Improved] 使用 pinyin-data v0.6.1 的拼音数据。
  • [Improved] 使用 phrase-pinyin-data v0.8.3 的词语拼音数据。
  • [Changed] 不再测试 Python 2.6 和 Python 3.3,增加测试 Python 3.7 和 PyPy3 即不保证程序兼容 Python 2.6 和 Python 3.3。

0.32.0 (2018-07-28)

0.31.0 (2018-06-10)

0.30.1 (2018-04-25)

  • [Improved] 更新文档和测试。(via 7fa0b87)
  • [Improved] 对用户传入的已进行分词处理的数据进行二次分词以便提高准确性。(via #126)
  • [Improved] 使用 pinyin-data v0.5.1 的拼音数据。(via #125)

0.30.0 (2018-02-03)

  • [New] 支持有拼音的非汉字字符 (via #119)。
  • [Changed] 修复之前无意中把 pinyin 函数中的 strict 参数的默认值修改为了 False , 现在把 strict 参数的默认值恢复为预期的 True (via #121)。

0.29.0 (2018-01-14)

  • [New] 可以通过环境变量 PYPINYIN_NO_DICT_COPY 禁用代码内对 dict 的 copy 操作,节省内存(via #115 thanks @daya0576 )。

0.28.0 (2017-12-08)

  • [New] 给代码增加类型注解(via #110)。

0.27.0 (2017-10-28)

  • [New] 命令行工具支持通过更简便的方式指定参数及拼音风格。 (详见 #105, Thanks @wdscxsj )
  • [Improved] 增加说明 strict 参数对结果有什么影响的文档。

0.26.1 (2017-10-25)

0.26.0 (2017-10-12)

  • [Changed] 不再自动调用 jieba 分词模块,改为自动调用内置的最大匹配分词模块来分词。 (via #102)

0.25.0 (2017-10-01)

  • [New] 内置一个最大匹配分词模块,使用内置的词语拼音库来训练这个分词模块, 解决自定义词语库有时可能不生效的问题(因为这个词语在 jieba 等分词模块中不是可用词)。(via #81)

    获取拼音或自定义词库后使用:

    >>> from pypinyin import pinyin, load_phrases_dict
    >>> load_phrases_dict({'了局': [['liǎo'], ['jú']]})
    >>> pinyin('了局啊')   # 使用 jieba 分词
    Building prefix dict from the default dictionary ...
    Dumping model to file cache /var/folders/s6/z9r_07h53pj_d4x7qjszwmbw0000gn/T/jieba.cache
    Loading model cost 1.175 seconds.
    Prefix dict has been built succesfully.
    [['le'], ['jú'], ['a']]
    
    >>> from pypinyin.contrib.mmseg import seg, retrain
    >>> retrain(seg)   # 没有使用 load_phrases_dict 时可以不调用这个函数
    >>> pinyin(seg.cut('了局啊'))  # 使用内置的最大匹配分词
    [['liǎo'], ['jú'], ['a']]
    >>>
    

    单独使用:

    >>> from pypinyin.contrib.mmseg import seg
    >>> text = '你好,我是中国人,我爱我的祖国'
    >>> seg.cut(text)
    <generator object Seg.cut at 0x10b2df2b0>
    >>> list(seg.cut(text))
    ['你好', ',', '我', '是', '中国人', ',', '我', '爱',
     '我的', '祖', '国']
    >>> seg.train(['祖国', '我是'])
    >>> list(seg.cut(text))
    ['你好', ',', '我是', '中国人', ',', '我', '爱',
     '我的', '祖国']
    >>>
    

0.24.0 (2017-09-17)

  • [New] 支持类似 pyinstaller 的打包工具对使用 pypinyin 的程序进行打包, 不会出现跟打包前不一样的输出(比如: #92 )(via #93 )。

0.23.0 (2017-07-09)

0.22.0 (2017-06-14)

0.21.1 (2017-05-29)

  • [Bugfixed] 修复在 Python 2 下通过 pip install 安装 wheel 格式的安装包后, 无法正常使用的问题。(Python 2 下没有自动安装依赖包)

0.21.0 (2017-05-14)

  • [New] 重构各拼音风格实现,支持自定义拼音风格或覆盖已有拼音风格的实现.

    from pypinyin.style import register
    
    @register('style1')
    def func(pinyin, **kwargs):
        # pinyin = xxx   # convert to style1
        return pinyin
    
    def func(pinyin, **kwargs):
        # pinyin = xxx   # convert to style2
        return pinyin
    register('style2', func=func)
    

0.20.0 (2017-05-13)

  • [New] 增加 strict 参数来控制处理声母和韵母时是否严格遵循 《汉语拼音方案》 标准。

    strict=True 时根据 《汉语拼音方案》 的如下规则处理声母、在韵母相关风格下还原正确的韵母:

    • 21 个声母: b p m f d t n l g k h j q x zh ch sh r z c sy, w 不是声母
    • i行的韵母,前面没有声母的时候,写成yi(衣),ya(呀),ye(耶),yao(腰),you(忧),yan(烟),yin(因),yang(央),ying(英),yong(雍)。(y 不是声母
    • u行的韵母,前面没有声母的时候,写成wu(乌),wa(蛙),wo(窝),wai(歪),wei(威),wan(弯),wen(温),wang(汪),weng(翁)。(w 不是声母
    • ü行的韵母,前面没有声母的时候,写成yu(迂),yue(约),yuan(冤),yun(晕);ü上两点省略。(韵母相关风格下还原正确的韵母 ü
    • ü行的韵跟声母j,q,x拼的时候,写成ju(居),qu(区),xu(虚),ü上两点也省略; 但是跟声母n,l拼的时候,仍然写成nü(女),lü(吕)。(韵母相关风格下还原正确的韵母 ü
    • iou,uei,uen前面加声母的时候,写成iu,ui,un。例如niu(牛),gui(归),lun(论)。(韵母相关风格下还原正确的韵母 iou,uei,uen

    具体差异可以查看 tests/test_standard.py 中的对比结果测试用例

  • [Changed] 改为使用 enum 定义拼音风格(兼容旧版本)

0.19.0 (2017-05-05)

  • [New] 韵母风格下根据 汉语拼音方案 还原原始的 iou , uei , uen 韵母。

    iou,uei,uen前面加声母的时候,写成iu,ui,un。 例如niu(牛),gui(归),lun(论)。即:

    • niu 的韵母是 iou
    • gui 的韵母是 uei
    • lun 的韵母是 uen
  • [Fixed] 修复韵母相关风格下没有正确处理 wu 的韵母的问题 (比如: FINALS_TONE 风格下的结果是 的问题) 。

  • [Fixed] 修复漏了 ǖ -> v1 的转换。

0.18.2 (2017-04-25)

0.18.1 (2017-03-22)

  • [Improved] PyPI 上传过程中出了点问题。

0.18.0 (2017-03-22)

0.17.0 (2017-03-13)

  • [Changed] 词语拼音数据改为使用来自 phrase-pinyin-data v0.3.1 的拼音数据。
  • [Fixed] 修正 斯事体大 的拼音。

0.16.1 (2017-02-12)

  • [Improved] 使用 pinyin-data v0.4.1 的拼音数据. fixed #58
  • [Improved] 更新 厦门 的拼音. fixed #59

0.16.0 (2016-11-27)

  • [New] Added new pinyin styles - CYRILLIC (汉语拼音与俄语字母对照表) and CYRILLIC _FIRST (via #55 thanks @tyrbonit)

    >>> pypinyin.pinyin('中心', style=pypinyin.CYRILLIC)
    [['чжун1'], ['синь1']]
    >>> pypinyin.pinyin('中心', style=pypinyin.CYRILLIC_FIRST)
    [['ч'], ['с']]
    
  • [New] Added Russian translation README (README_ru.rst)

  • [New] Command-line tool supported the new pinyin styles: CYRILLIC, CYRILLIC_FIRST

0.15.0 (2016-10-18)

0.14.0 (2016-09-24)

  • [New] 新增注音 BOPOMOFO 及注音首字母 BOPOMOFO_FIRST 风格(via #51 thanks @gumblex @Artoria2e5)

    >>> pypinyin.pinyin('中心', style=pypinyin.BOPOMOFO)
    [['ㄓㄨㄥ'], ['ㄒㄧㄣ']]
    >>> pypinyin.pinyin('中心', style=pypinyin.BOPOMOFO_FIRST)
    [['ㄓ'], ['ㄒ']]
    
  • [New] 新增音调在拼音后的 TONE3 以及 FINALS_TONE3 风格(via #51 thanks @gumblex @Artoria2e5 )

    >>> pypinyin.pinyin('中心', style=pypinyin.TONE3)
    [['zhong1'], ['xin1']]
    >>> pypinyin.pinyin('中心', style=pypinyin.FINALS_TONE3)
    [['ong1'], ['in1']]
    
  • [New] 命令行程序支持新增的四个风格: TONE3, FINALS_TONE3, BOPOMOFO, BOPOMOFO_FIRST

  • [Bugfixed] 修复 TONE2 中 ü 标轻声的问题(像 侵略 -> qi1n lv0e4),以及去除文档中 0 表示轻声(via #51 thanks @gumblex)

  • [Changed] 不再使用 0 表示轻声,轻声时没有数字(via #51 thanks @gumblex)

0.13.0 (2016-08-19)

  • [Changed] 分离词组库中包含中文逗号的词语(via f097b6a)
  • [Changed] 使用 pinyin-data v0.3.0 的拼音数据

0.12.1 (2016-05-11)

  • [Bugfixed] 修复一些词语存在拼音粘连在一起的情况. (#41 thanks @jolly-tao )

0.12.0 (2016-03-12)

  • [Changed] 单个汉字的拼音数据改为使用来自 pinyin-data 的拼音数据。

  • [New] 命令行程序支持从标准输入读取汉字信息:

    $ echo "你好" | pypinyin
    nǐ hǎo
    $ pypinyin < hello.txt
    nǐ hǎo
    

0.11.1 (2016-02-17)

  • [Bugfixed] 更新 phrases_dict 修复类似 #36 的问题。thanks @someus

0.11.0 (2016-01-16)

  • [Changed] 分割 __init__.pycompat.py, constants.pycore.pyutils.py。 影响: __init__.py 中只保留文档中提到过的 api, 如果使用了不在文档中的 api 则需要调整代码。

0.10.0 (2016-01-02)

  • [New] Python 3.3++++ 以上版本默认支持 U++++20000 ~ U++++2FA1F 区间内的汉字(详见 #33)

0.9.5 (2015-12-19)

  • [Bugfixed] 修复未正确处理鼻音(详见 汉语拼音 - 维基百科 )的问题(#31 thanks @xulin97 ):
    • ḿ、ń、ň、ǹ 对应 “呒”、“呣”、“唔”、“嗯”等字。 这些字之前在各种风格下都输出原始的汉字而不是拼音。

0.9.4 (2015-11-27)

  • [Improved] 细微调整,主要是更新文档

0.9.3 (2015-11-15)

  • [Bugfixed] Fixed Python 3 compatibility was broken.

0.9.2 (2015-11-15)

  • [New] load_single_dictload_phrases_dict 增加 style 参数支持 TONE2 风格的拼音

    load_single_dict({ord(u'啊'): 'a1'}, style='tone2')
    load_phrases_dict({u"阿爸": [[u"a1"], [u"ba4"]]}, style='tone2'}
    
  • [Improved] Improved docs

0.9.1 (2015-10-17)

  • [Bugfixed][Changed] 修复 ju, qu, xu, yu, yiwu 的韵母( #26 ). Thanks @MingStar :
    • ju, qu, xu 的韵母应该是 v
    • yi 的韵母是 i
    • wu 的韵母是 u
    • 从现在开始 y 既不是声母也不是韵母,详见 汉语拼音方案

0.9.0 (2015-09-20)

  • [Changed] 将拼音词典库里的国际音标字母替换为 ASCII 字母. Thanks @MingStar :
    • ɑ -> a
    • ɡ -> g

0.8.5 (2015-08-23)

  • [Bugfixed] 修复 zh, ch, sh, z, c, s 顺序问题导致获取声母有误

0.8.4 (2015-08-23)

  • [Changed] y, w 也不是声母. (hotoo/pinyin#57):
    • y, w 开头的拼音在声母(INITIALS)模式下将返回 ['']

0.8.3 (2015-08-20)

  • [Improved] 上传到 PyPI 出了点问题,但是又 没法重新上传 ,只好新增一个版本

0.8.2 (2015-08-20)

  • [Bugfixed][Changed] 修复误把 yu 放入声母列表里的 BUG(#22). Thanks @MingStar

0.8.1 (2015-07-04)

  • [Bugfixed] 重构内置的分词功能,修复“无法正确处理包含空格的字符串的问题”

0.8.0 (2015-06-27)

  • [New] 内置简单的分词功能,完善处理没有拼音的字符 (如果不需要处理多音字问题, 现在可以不用安装 jieba 或其他分词模块了):

    # 之前, 安装了结巴分词模块
    lazy_pinyin(u'你好abc☆☆')
    [u'ni', u'hao', 'a', 'b', 'c', u'\u2606', u'\u2606']
    
    # 现在, 无论是否安装结巴分词模块
    lazy_pinyin(u'你好abc☆☆')
    [u'ni', u'hao', u'abc\u2606\u2606']
    
  • [Changed]errors 参数是回调函数时,函数的参数由 单个字符 变更为 单个字符或词组
    即: 对于 abc 字符串, 之前将调用三次 errors 回调函数: func('a') ... func('b') ... func('abc')
    现在只调用一次: func('abc')
  • [Changed] 将英文字符也纳入 errors 参数的处理范围:

    # 之前
    lazy_pinyin(u'abc', errors='ignore')
    [u'abc']
    
    # 现在
    lazy_pinyin(u'abc', errors='ignore')
    []
    

0.7.0 (2015-06-20)

  • [Bugfixed] Python 2 下无法使用 from pypinyin import * 的问题
  • [New] 支持以下环境变量:
    • PYPINYIN_NO_JIEBA=true: 禁用“自动调用结巴分词模块”
    • PYPINYIN_NO_PHRASES=true: 禁用内置的“词组拼音库”

0.6.0 (2015-06-10)

  • [New] errors 参数支持回调函数(#17):

    def foobar(char):
        return u'a'
    pinyin(u'あ', errors=foobar)
    

0.5.7 (2015-05-17)

  • [Bugfixed] 纠正包含 “便宜” 的一些词组的读音

0.5.6 (2015-02-26)

  • [Bugfixed] “苹果” pinyin error. #11
  • [Bugfixed] 重复 import jieba 的问题
  • [Improved] 精简 phrases_dict
  • [Improved] 更新文档

0.5.5 (2015-01-27)

  • [Bugfixed] phrases_dict error

0.5.4 (2014-12-26)

  • [Bugfixed] 无法正确处理由分词模块产生的中英文混合词组(比如:B超,维生素C)的问题. #8

0.5.3 (2014-12-07)

  • [Improved] 更新拼音库

0.5.2 (2014-09-21)

  • [Improved] 载入拼音库时,改为载入其副本。防止内置的拼音库被破坏
  • [Bugfixed] 胜败乃兵家常事 的音标问题

0.5.1 (2014-03-09)

  • [New] 参数 errors 用来控制如何处理没有拼音的字符:

    • 'default': 保留原始字符
    • 'ignore': 忽略该字符
    • 'replace': 替换为去掉 \u 的 unicode 编码字符串(u'\u90aa' => u'90aa')

    只处理 [^a-zA-Z0-9_] 字符。

0.5.0 (2014-03-01)

  • [Changed] 使用新的单字拼音库内容和格式

    新的格式:{0x963F: u"ā,ē"}
    旧的格式:{u'啊': u"ā,ē"}

0.4.4 (2014-01-16)

  • [Improved] 清理命令行命令的输出结果,去除无关信息
  • [Bugfixed] “ImportError: No module named runner”

0.4.3 (2014-01-10)

  • [Bugfixed] 命令行工具在 Python 3 下的兼容性问题

0.4.2 (2014-01-10)

  • [Changed] 拼音风格前的 STYLE_ 前缀(兼容包含 STYLE_ 前缀的拼音风格)
  • [New] 命令行工具,具体用法请见: pypinyin -h

0.4.1 (2014-01-04)

  • [New] 支持自定义拼音库,方便用户修正程序结果(load_single_dict, load_phrases_dict)

0.4.0 (2014-01-03)

  • [Changed]jieba 模块改为可选安装,用户可以选择使用自己喜爱的分词模块对汉字进行分词处理
  • [New] 支持 Python 3

0.3.1 (2013-12-24)

  • [New] lazy_pinyin

    >>> lazy_pinyin(u'中心')
    ['zhong', 'xin']
    

0.3.0 (2013-09-26)

  • [Bugfixed] 首字母风格无法正确处理只有韵母的汉字
  • [New] 三个拼音风格:
    • pypinyin.STYLE_FINALS : 韵母风格1,只返回各个拼音的韵母部分,不带声调。如: ong uo
    • pypinyin.STYLE_FINALS_TONE : 韵母风格2,带声调,声调在韵母第一个字母上。如: ōng
    • pypinyin.STYLE_FINALS_TONE2 : 韵母风格2,带声调,声调在各个拼音之后,用数字 [0-4] 进行表示。如: o1ng uo2

0.2.0 (2013-09-22)

  • [Improved] 完善对中英文混合字符串的支持:

    >> pypinyin.pinyin(u'你好abc')
    [[u'n\u01d0'], [u'h\u01ceo'], [u'abc']]
    

0.1.0 (2013-09-21)

  • [New] Initial Release