1.问题描述在文本数据处理时,经常回出现文本中各种语言的混杂情况,包括:英文、日语、俄语、法语等,需要将不同语种的语言批量翻译成中文进行处理。可以通过Py
1.问题描述
在文本数据处理时,经常回出现文本中各种语言的混杂情况,包括:英文、日语、俄语、法语等,需要将不同语种的语言批量翻译成中文进行处理。可以通过Python直接调用百度提供的翻译API进行批量的翻译。
百度翻译API详细文档见:百度翻译API文档
2.问题解决
开发环境:Linux
将文本中的中文和非中文进行分离,,对非中文的部分进行翻译。
Python的代码如下:
#!/usr/bin/python
#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf8")
import re
import json
import langid
import urllib
from urllib2 import Request, urlopen, URLError, HTTPError
def translate(inputFile, outputFile):
fin = open(inputFile, 'r')
fout = open(outputFile, 'w')
for eachLine in fin:
line = eachLine.strip()
quoteStr = urllib.quote(line)
url = '?client_id=WtzfFYTtXyTocv7wjUrfGR9W&q=' + quoteStr + '&from=auto&to=zh'
try:
resultPage = urlopen(url)
except HTTPError as e:
print('The server couldn\'t fulfill the request.')
print('Error code: ', e.code)
except URLError as e:
print('We failed to reach a server.')
print('Reason: ', e.reason)
except Exception, e:
print 'translate error.'
print e
continue
resultJason = resultPage.read().decode('utf-8')
js = None
try:
js = json.loads(resultJason)
except Exception, e:
print 'loads Json error.'
print e
continue
key = u"trans_result"
if key in js:
dst = js["trans_result"][0]["dst"]
outStr = dst
else:
outStr = line
fout.write(outStr.strip().encode('utf-8') + '\n')
fin.close()
fout.close()
if __name__ == '__main__':
translate(sys.argv[1], sys.argv[2])
3.注意