使用python-opencc模塊,實(shí)現(xiàn)漢字的繁簡(jiǎn)互轉(zhuǎn)瓷叫。這里使用了繁體轉(zhuǎn)為簡(jiǎn)體拢军。代碼示例:
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())
轉(zhuǎn)化完成的文本使用readlines()讀取時(shí)楞陷,長(zhǎng)度只剩1了。即沒(méi)有換行了朴沿。
先查看了一下opencc模塊的convert函數(shù)源碼猜谚。
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編碼,程序在完成轉(zhuǎn)化之后輸出的還是unicode編碼魏铅,所以昌犹,先嘗試寫入文件時(shí),編碼為utf8览芳,而不是直接寫
l=cc.convert(l).encode('utf8','ignore')
f.write(l+'\n')
問(wèn)題基本解決斜姥。
不過(guò)這種轉(zhuǎn)換方式速度非常慢,不知道完全使用opencc的C++代碼會(huì)不會(huì)好一點(diǎn)。