1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > python调用youdao百度翻译API 翻译文本(tcy)

python调用youdao百度翻译API 翻译文本(tcy)

时间:2020-06-16 07:54:23

相关推荐

python调用youdao百度翻译API 翻译文本(tcy)

用途:本文通过python实现在线翻译说明:方式1:youdao实现翻译(不需要注册,翻译文本自动识别)方式2:baidu翻译API(需要注册,获取ip和密码)首先需要在百度翻译API官网进行注册,选择个人用户注册好之后,进入个人服务中心获取ip和密码

共同函数:提取结果

import requests,re, jsonimport random,hashlib, urllib.parse,http.clientdef get_translate_result(translate_result,is_youdao=True)->str:'''youdao:# [[{'src': 'This is a book.', 'tgt': '这是一本书。'}], [{'src': 'My name is Tom.', 'tgt': '我的名字是汤姆。'}]]}baidu:# [{'src': 'This is a book.', 'dst': '这是一本书。'}, {'src': 'My name is Tom.', 'dst': '我叫汤姆。'}]'''s,text = '',''if is_youdao:for v in translate_result:text = v[0]['tgt'].strip()s = '%s%s'%(s,text)else:for v in translate_result:text = v['dst'].strip()s = '%s%s'%(s,text)s = re.sub(r'。', '.', s)s = re.sub(r'?', '?', s)s = re.sub(r',', ',', s)s = re.sub(r'’', "'", s)s = re.sub(r'[“”]+', '"', s)return s

youdao翻译

def youdao_translate(cn_en_text)->str:#翻译文字if not (cn_en_text and isinstance(cn_en_text,str)):return ''data = {'doctype': 'json','type': 'AUTO','i':cn_en_text}url = "/translate"r = requests.get(url,params=data)result = r.json()translate_result = result['translateResult']# [{'src': 'This is a book.', 'dst': '这是一本书。'}, {'src': 'My name is Tom.', 'dst': '我叫汤姆。'}]return get_translate_result(translate_result)

baidu翻译

def get_myurl_baidu(text='',src = 'en',dst = 'zh',id ='1111',password='xxxx' ):''' baidu 翻译上注册的id,password '''myurl = '/api/trans/vip/translate'salt = random.randint(32768, 65536)sign = id + text + str(salt) + passwordsign = hashlib.md5(sign.encode()).hexdigest()q = urllib.parse.quote(text)myurl = '%s?appid=%s&q=%s&from=%s&to=%s&salt=%s&sign=%s' %(myurl,id,q,src,dst,salt,sign)return myurl

def baidu_translation(text,src = 'en',dst = 'zh',id ='1111',password='xxxx' ):if not (text and isinstance(text, str)): return ''try:myurl =get_myurl_baidu(text,src,dst ,id,password)httpClient = http.client.HTTPConnection('api.')httpClient.request('GET', myurl)# response是HTTPResponse对象response = httpClient.getresponse()jsonResponse = response.read().decode("utf-8") # 获得返回的结果,结果为json格式js = json.loads(jsonResponse) # 将json格式的结果转换字典结构translate_result =js["trans_result"]return get_translate_result(translate_result,False) # 取得翻译后的文本结果except Exception as e:print(e)finally:if httpClient:httpClient.close()

if __name__ == '__main__':names='This is a book.\nMy name is Tom.'print(youdao_translate(names))print(baidu_translation(names))'''这是一本书.我的名字是汤姆.这是一本书.我叫汤姆.'''

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。