【Python】Python的urllib、urllib2模块调用“百度翻译”API进行批量自动翻译
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
1.问题描述
在文本数据处理时,经常回出现文本中各种语言的混杂情况,包括:英文、日语、俄语、法语等,需要将不同语种的语言批量翻译成中文进行处理。可以通过Python直接调用百度提供的翻译API进行批量的翻译。
百度翻译API详细文档见:百度翻译API文档
2.问题解决
开发环境:Linux
将文本中的中文和非中文进行分离,对非中文的部分进行翻译。
Python的代码如下:translate.py
#!/usr/bin/python
#-*- coding:utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf8")
import json #导入json模块
import urllib #导入urllib模块
from urllib2 import Request, urlopen, URLError, HTTPError #导入urllib2模块
def translate(inputFile, outputFile):
fin = open(inputFile, 'r') #以读的方式打开输入文件
fout = open(outputFile, 'w') #以写的方式代开输出文件
for eachLine in fin: #按行读入文件
line = eachLine.strip() #去除每行首尾可能的空格等
quoteStr = urllib.quote(line) #将读入的每行内容转换成特定的格式进行翻译
url = 'http://openapi.baidu.com/public/2.0/bmt/translate?client_id=WtzfFYTtXyTocv7wjUrfGR9W&q=' + quoteStr + '&from=auto&to=zh'
try:
resultPage = urlopen(url) #调用百度翻译API进行批量翻译
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') #取得翻译的结果,翻译的结果是json格式
js = None
try:
js = json.loads(resultJason) #将json格式的结果转换成Python的字典结构
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]) #通过获得命令行参数获得输入输出文件名来执行,方便
程序完成之后,在Linux命令行输入:python translate.py myinput.txt myoutput.txt
就能够执行了。最终的翻译结果都写入到输出文件myoutput.txt中了。
3.注意
(1)程序的前几行都是常规写法,为了解决可能经常出现的中文编码问题。
(2)第18行,需要进行翻译的文本需要通过quote函数转化成特定的格式编码进行翻译。
(3)第19行,url中的“&from=auto&to=zh”,from后面接源语言的代码,to后面接目的语言的代码,如:zh表示中文、en表示英文,auto表示自动的任意语言。
希望对大家有所帮助,谢谢。
GitHub 加速计划 / li / linux-dash
6
1
下载
A beautiful web dashboard for Linux
最近提交(Master分支:3 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献7条内容
所有评论(0)