Python中文简体繁体转换
相关的库
- zhconv https://pypi.org/project/zhconv/
- opencc https://github.com/yichen0831/opencc-python
- starcc-py 下一代 opencc https://github.com/StarCC0/starcc-py
- 为了解决 Opencc 无人维护和相关bug
喷火的尾巴
May 27, 2020
](/home/5119)1 赞
推荐两个开源的python库来实现简体中文和繁体中文的转换:
zhconv库:Python2和python3通用,基于MediaWiki词汇表的最大正向匹配简繁转换。
OpenCC库(全称“Open Chinese Convert”):简体中文和繁体中文转换领域精准度最高的库。
简而言之,如果求上手快,简单易用,那就选择zhconv库;
如果对精准度、覆盖度具有高度追求,那就选择OpenCC库。(OpenCC上手也比较快,正式项目中推荐使用OpenCC库)
zhconv库的GitHub地址:链接
zhconv库的Tutorial教程:链接
OpenCC库的GitHub地址:链接
OpenCC库的Demo地址:链接
再详细介绍zhconv和OpenCC前,需要知道的是繁体中文不只一种,香港的繁体中文,和台湾地区是不太一样的,另外新加坡地区也用简体中文,但马来西亚、新加坡的简体中文与中国的简体中文也有一点出入,一般新加坡的简体中文被称为“马新简体”。比如zhconv库中就做了如下分类:
- zh-cn 大陆简体
- zh-tw 台湾正体
- zh-hk 香港繁体
- zh-sg 马新简体
- zh-hans 简体
- zh-hant 繁体
以zhconv进行简体和繁体中文转换为例,首先使用pip安装zhconv模块:
$ sudo pip install zhconv
插入zhconv模块后,如下进行简体与繁体的转换:
>>> import zhconv
>>> print( zhconv.convert(u'我干什么不干你事。', 'zh-cn') ) # 转换成大陆简体
我干什么不干你事。
>>> print( zhconv.convert( u'反清复明', 'zh-hk' ) ) # 转换成香港繁体
反清复明
zhconv兼容python2和python3,此外zhconv还支持MediaWiki语法:
>>> print(convert_for_mw(u'在现代,机械计算-{}-机的应用已经完全被电子计算-{}-机所取代', 'zh-hk'))
在现代,机械计算机的应用已经完全被电子计算机所取代
>>> print(convert_for_mw(u'-{zh-hant:资讯工程;zh-hans:计算机工程学;}-是电子工程的一个分支,主要研究计算机软硬件和二者间的彼此联系。', 'zh-tw'))
资讯工程是电子工程的一个分支,主要研究计算机软硬体和二者间的彼此联系。
>>> print(convert_for_mw(u'张国荣曾在英国-{zh:利兹;zh-hans:利兹;zh-hk:列斯;zh-tw:里兹}-大学学习。', 'zh-sg'))
张国荣曾在英国利兹大学学习。
>>> print(convert_for_mw('毫米(毫公分),符号mm,是长度单位和降雨量单位,-{zh-hans:台湾作-{公厘}-或-{公厘}-;zh-hant:港澳和大陆称为-{毫米}-(台湾亦有使用,但较常使用名称为毫公分);zh-mo:台湾作-{公厘}-或-{公厘}-;zh-hk:台湾作-{公厘}-或-{公厘}-;}-。', 'zh-cn'))
毫米(毫公分),符号mm,是长度单位和降雨量单位,台湾作公厘或公厘。
zhconv还提供繁体中文与简体中文转换的命令行工具:
python -mzhconv [-w] {zh-cn|zh-tw|zh-hk|zh-sg|zh-hans|zh-hant|zh} < input > output
而OpenCC库应该算中文繁体和简体转换领域精准度最高、覆盖率最高、速度最快的python库了;而且官方OpenCC还有C++版本、JavaScript版本,此外第三方还提供了OpenCC的Java版本、Android版本、Swift版本、PHP版本;这里只介绍OpenCC的python版本;首先用pip安装OpenCC库:
$ sudo pip install opencc
Python中使用OpenCC库:
import opencc
converter = opencc.OpenCC('s2t.json')
converter.convert('汉字') # 汉字
上面的“s2t.json”是该库内置的预设文件,指简体转繁体。
OpenCC所有的内置预设文件如下所示,需要怎么转换,就用哪个转换文件即可:
- s2t.json 简体到繁体
- t2s.json 繁体到简体
- s2tw.json 简体到台湾正体
- tw2s.json 台湾正体到简体
- s2hk.json 简体到香港繁体(香港小学学习字词表标准)
- hk2s.json 香港繁体(香港小学学习字词表标准)到简体
- s2twp.json 简体到繁体(台湾正体标准)并转换为台湾常用词汇
- tw2sp.json 繁体(台湾正体标准)到简体并转换为中国大陆常用词汇
- t2tw.json 繁体(OpenCC 标准)到台湾正体
- t2hk.json 繁体(OpenCC 标准)到香港繁体(香港小学学习字词表标准)
- t2jp.json 繁体(OpenCC 标准,旧字体)到日文新字体
- jp2t.json 日文新字体到繁体(OpenCC 标准,旧字体)
- hk2t.json 香港繁体(香港小学学习字词表标准)到繁体(OpenCC 标准)
- tw2t.json 台湾正体到繁体(OpenCC 标准)
其实OpenCC的上手也很快的,正式项目中推荐使用OpenCC来实现中文繁体与简体转换。
1 赞 0 条评论 分享