python实现在线翻译功能
对于需要大量翻译的数据,人工翻译太慢,此时需要使用软件进行批量翻译。
1.使用360的翻译
deffanyi_word_cn(string): url="https://fanyi.so.com/index/search" #db_path='./db/tasks.db' Form_Data={} #这里输入要翻译的英文 Form_Data['query']=string Form_Data['eng']='1' #用urlencode把字典变成字符串,#服务器不接受字典,只接受字符串和二进制 data=parse.urlencode(Form_Data).encode('utf-8') #改成服务器可识别的数据后,请求,获取回应数据 response=request.urlopen(url,data) html=response.read().decode("utf-8")#解码方式 #java中的对象(集合)和数组(元素为集合),loads可转Python字典 result=json.loads(html) #字典调取键名data下的键名fanyi,获取其值 translate_result=result["data"]["fanyi"] #print(translate_result) returntranslate_result
2.使用Google自带的API来翻译
注意,需要安装API模块即可。
pipinstalltranslator
#googleapi,per1000wordseveryday deftranslate_cn_api(content): translator=Translator(to_lang="zh") translation=translator.translate(content) returntranslation
3.使用Google翻译来做,是由于Google提供的API有字节限制,每天只能翻译1000字。
备注:环境准备
3.1java环境
3.2安装execjs模块
pipinstallPyExecJS
3.3两个实现模块
HandleJs.py
#coding=utf-8 importexecjs classPy4Js(): def__init__(self): self.ctx=execjs.compile(""" functionTL(a){ vark=""; varb=406644; varb1=3293161072; varjd="."; var$b="+-a^+6"; varZb="+-3^+b+-f"; for(vare=[],f=0,g=0;gm?e[f++]=m:(2048>m?e[f++]=m>>6|192:(55296==(m&64512)&&g+1 >18|240, e[f++]=m>>12&63|128):e[f++]=m>>12|224, e[f++]=m>>6&63|128), e[f++]=m&63|128) } a=b; for(f=0;f a&&(a=(a&2147483647)+2147483648); a%=1E6; returna.toString()+jd+(a^b) }; functionRL(a,b){ vart="a"; varYb="+"; for(varc=0;c =t?d.charCodeAt(0)-87:Number(d), d=b.charAt(c+1)==Yb?a>>>d:a< main.py
#coding=utf-8 #importurllib.request importurllib2 fromHandleJsimportPy4Js fromtranslateimportTranslator importrequests #Example:find_last('aaaa','a')returns3 #Makesureyourprocedurehasareturnstatement. deffind_last(string,str): last_position=-1 whileTrue: position=string.find(str,last_position+1) ifposition==-1: returnlast_position last_position=position defopen_url(url): headers={'User-Agent':'Mozilla/5.0(WindowsNT6.1;WOW64;rv:23.0)Gecko/20100101Firefox/23.0'} req=urllib2.Request(url=url,headers=headers) response=urllib2.urlopen(req) data=response.read().decode('utf-8') returndata deftranslate_core(content,tk,language): iflen(content)>4891: print("toolongbyte>4891") return content=urllib2.quote(content) iflanguage=='de': url="http://translate.google.cn/translate_a/single?client=t"+"&sl=de&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca"+"&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1"+"&srcrom=0&ssel=0&tsel=0&kc=2&tk=%s&q=%s"%(tk,content) else: url="http://translate.google.cn/translate_a/single?client=t"+"&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca"+"&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1"+"&srcrom=0&ssel=0&tsel=0&kc=2&tk=%s&q=%s"%(tk,content) #result为json格式 result=open_url(url) #print('results:'+result) iflen(content)<10: end=result.find("\",") ifend>4: returnresult[4:end] else: result_all='' iflanguage=='de': result_all=result.split(',null,"de",null,null,')[0].replace('[[','').replace(']]',']')[1:] else: result_all=result.split(',null,"en",null,null,')[0].replace('[[','').replace(']]',']')[1:] #print('result_all:'+result_all) output_cn='' #解析中文字段并拼接 list=result_all.split('],[') foriinrange(len(list)-1): end=list[i].find("\",") tmp_buf=list[i][1:end] output_cn=output_cn+tmp_buf returnoutput_cn deftranslate_normal(content,language): js=Py4Js() tk=js.getTk(content) #print('english:'+content) cn_buf=translate_core(content,tk,language) #print('Chinese:'+cn_buf) returncn_buf deftranslate_cn(content,language): LEN_LIMIT=4891 all_len=len(content) print('en:'+content) ifall_len>LEN_LIMIT: content_cn='' whileTrue: content_limit=content[0:LEN_LIMIT] limit_end=find_last(content_limit,'.')+1 #print('limit_end:'+str(limit_end)) iflimit_end==0: limit_end=find_last(content_limit,'')+1 iflimit_end==0: limit_end=LEN_LIMIT content_en=content[0:limit_end] leave_len=all_len-limit_end ifcontent_en=='': break; #print('content_en:'+content_en) content_cn=content_cn+translate_normal(content_en,language); content=content[limit_end:] returncontent_cn else: returntranslate_normal(content,language) #googleapi,per1000wordseveryday deftranslate_cn_api(content): translator=Translator(to_lang="zh") translation=translator.translate(content) returntranslation if__name__=="__main__": content="""Beautifulisbetterthanugly. Explicitisbetterthanimplicit. Simpleisbetterthancomplex. Complexisbetterthancomplicated. Namespacesareonehonkinggreatidea--let'sdomoreofthose!""" # content=""" IT-GrundschutzM5.131:AbsicherungvonIP-ProtokollenunterWindowsServer2003.""" #content='High' content="""Beautifulisbetterthanugly. Explicitisbetterthanimplicit. Simpleisbetterthancomplex. Complexisbetterthancomplicated. Namespacesareonehonkinggreatidea--let'sdomoreofthose!""" language='en' test=translate_cn(content.replace('\n',''),language) print('ok:'+test) #content='Checksversion'此处实现了德语翻译成中文和英文翻译成中文。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。