任务1:现有某任务需要将某个软件中的参数名称和对应的参数介绍信息导出,文字全为英文,并且需要将参数名称与参数介绍信息保存到Word中,以表格形式存储。
任务2:将任务1中保存的Word表格中的英文文本翻译为中文,需求中英文对照翻译,中文翻译需要放在英文的下一行。
.xlsx
文件.xlsx
文件内容效果如下:APP ID
和密钥
在百度翻译开放平台————管理控制台————开发者信息————申请信息
中# -*- coding: utf-8 -*-
# 百度翻译开放平台:http://api.fanyi.baidu.com/
# 通用文本翻译文档:http://api.fanyi.baidu.com/doc/21
# 代码参考:https://zhuanlan.zhihu.com/p/625585142
# 关于请求次数太快的解决方法:https://zhuanlan.zhihu.com/p/625871969
import docx
import requests
import requests
import random
import json
from hashlib import md5
import time
# Set your own appid/appkey.
appid = '填入你申请的 AppID' # INPUT_YOUR_APPID
appkey = '填入你申请的 AppKey' # INPUT_YOUR_APPKEY
# For list of language codes, please refer to `https://api.fanyi.baidu.com/doc/21`
from_lang = 'en' # 原始语言类型:en 英语
to_lang = 'zh' # 翻译后语言类型:zh 中文
endpoint = 'https://fanyi-api.baidu.com'
path = '/api/trans/vip/translate'
url = endpoint + path # 官方文档上的通用翻译API HTTPS 地址:https://fanyi-api.baidu.com/api/trans/vip/translate
# Generate salt and sign 两个参数用于确保请求的安全性
def make_md5(s, encoding='utf-8'):
return md5(s.encode(encoding)).hexdigest()
def Translate(query):
# query = 'Hello World! This is 1st paragraph.\nThis is 2nd paragraph.'
salt = random.randint(32768, 65536)
sign = make_md5(appid + text + str(salt) + appkey)
# Build request
headers = {'Content-Type': 'application/x-www-form-urlencoded'}
payload = {'appid': appid, 'q': query, 'from': from_lang, 'to': to_lang, 'salt': salt, 'sign': sign}
# Send request
r = requests.post(url, params=payload, headers=headers)
result = r.json()
translated_text = ' '.join(result['trans_result'][0]['dst'])
# print(translated_text)
time.sleep(1) # 停止1秒,避免请求速度太快而被拒绝
return translated_text
# ------------------------
start = time.time() # 开始计时
# 打开需要翻译的Word文档
doc = docx.Document('test.docx')
# 遍历文档中的每一个表格
for table in doc.tables:
# 遍历表格中的每一行
for row in table.rows:
# 遍历行中的每一个单元格
for cell in row.cells:
# 获取单元格中的文本
text = cell.text
# 如果文本不为空,则进行翻译
if text:
# 传入文本进行翻译
translated = Translate(text)
# 将翻译后的文本添加回单元格
cell.text = f"{text}\n{translated}"
print(translated) # 打印翻译后的文本信息到控制台
# 保存修改后的Word文档
doc.save('translated_test.docx')
end = time.time() # 停止计时
print("Execution Time(执行耗时):", end - start)
print("\n~~~执行完成~~~")
到底了