python--opencc使用过程的问题

使用python-opencc模块,实现汉字的繁简互转。这里使用了繁体转为简体。代码示例:

import opencc
cc = opencc.OpenCC('mix2s')     #mix2s - Mixed to Simplified Chinese
f = open(target,'w')
for line in open(fname).readlines():
        l = line.decode('utf8','ignore').rstrip(u'\n')
        f.write(cc.convert(l)+u'\n')
f.close()
print len(open(target).readlines())

转化完成的文本使用readlines()读取时,长度只剩1了。即没有换行了。
先查看了一下opencc模块的convert函数源码。

def convert(self, text):
    """Convert text """
    proc = subprocess.Popen([self.opencc_path, '-c', self.confg], 
                            cwd=self.data_path,
                            stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE)
    proc.stdin.write(text.encode('utf8'))
    proc.stdin.close()
    code = proc.wait()
    if code:
        raise RuntimeError('Failed to call opencc with exit code %s' % code)
    result = proc.stdout.read() 
    return result.decode('utf8')

可以看到,输入是unicode编码,程序在完成转化之后输出的还是unicode编码,所以,先尝试写入文件时,编码为utf8,而不是直接写

l=cc.convert(l).encode('utf8','ignore')
f.write(l+'\n')

问题基本解决。
不过这种转换方式速度非常慢,不知道完全使用opencc的C++代码会不会好一点。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 字符集和编码简介 在编程中常常可以见到各种字符集和编码,包括ASCII,MBCS,Unicode等字符集。确切的说...
    兰山小亭阅读 12,887评论 0 13
  • 1. 概述 本文主要包括以下几个方面:编码基本知识,java,系统软件,url,工具软件等。 在下面的描述中,将以...
    骚的掉渣阅读 5,166评论 0 0
  • http://python.jobbole.com/85231/ 关于专业技能写完项目接着写写一名3年工作经验的J...
    燕京博士阅读 12,234评论 1 118
  • 用“他”这个称呼真的合适吗?是啊,你我他,他,一个第三人称,有什么可讨论的呢?但是当今天一个朋友给我说了这...
    老何_2016阅读 5,563评论 0 0
  • 1. 一年365天 每天的早安午安晚安 对我来说包含太多的思念 2. 知道你最喜欢吃的菜 去饭店每次都叫那道菜 朋...
    离别之殇阅读 2,635评论 1 0

友情链接更多精彩内容