一、百度开发者平台账号申请
先要申请一个开发者账号,然后获取appid和secretKey,这两个参数是调用百度翻译接口的必要参数。
地址:开发者中心信息
二、百度翻译接口调用
import requests
import random
import hashlib
import urllib
import json
class BaiduTranslate(object):
def __init__(self, word):
# 你要翻译的元素
self.q = word
self.fromLang = 'en'
self.toLang = 'zh'
self.baidu_translate = 'https://api.fanyi.baidu.com'
self.translate_api_url = '/api/trans/vip/translate'
# 百度开发者配置信息
self.appid = '***'
self.secretKey = '***'
# 开发配置
self.salt = random.randint(32768, 65536)
self.sign = self.appid + self.q + str(self.salt) + self.secretKey
m1 = hashlib.md5()
m1.update(self.sign.encode('utf-8'))
self.sign = m1.hexdigest()
self.my_url = self.translate_api_url + '?appid=' + self.appid + '&q=' + \
urllib.request.quote(self.q) +\
'&from=' + self.fromLang + '&to=' + self.toLang +\
'&salt=' + str(self.salt) + '&sign=' + self.sign
def en_translate_zh(self):
re = requests.request('post', self.baidu_translate + self.my_url)
print('\n\t re.text', re.text)
re_json = json.loads(re.text)
print('\n\t re_json', re_json)
print('\n\t',re_json['trans_result'][0]['dst']) # [0]表示第一个翻译结果,dst表示翻译结果
return re_json['trans_result'][0]['dst']
def readfromword(filename):
filename = filename + '.txt'
with open(filename, 'r') as f:
# realines()方法读取所有行,返回一个列表
lines = f.readlines()
# 拼接列表成为一个字符串
word = ''.join(lines)
# word中去掉/n换行符
word = word.replace('\n', ' ')
print(word)
return word
# bt.en_translate_zh()结果输出到txt文件
def write2txt(filename, word):
filename = filename + '.txt'
with open(filename, 'w') as f:
f.write(word)
if __name__ == "__main__":
filename= 'test'
test=readfromword(filename)
bt = BaiduTranslate(test)
bt.en_translate_zh()
write2txt('output', str(bt.en_translate_zh()))
这个代码主要实现了以下功能,首先readfromword()函数读取txt文件,然后将txt文件中的内容传入BaiduTranslate()类中,然后调用en_translate_zh()函数,得到翻译结果,使用write2txt函数将翻译结果输出到txt文件中。