是为了完成一个单词列表的制作
功能简单,需要百度翻译,个人是免费的
百度翻译开放平台获取个人api之后就可以进行翻译了
import docx
import docx.oxml.ns
from docx import Document
from docx.shared import Pt
import 翻译模块 as trans
def is_chinese(uchar):
"""判断一个unicode是否是汉字"""
if uchar >= u'\u4e00' and uchar <= u'\u9fa5':
return True
else:
return False
def write_docx(__strings, __output_file_path):
doc = Document()
for string in __strings:
paragraph = doc.add_paragraph()
for char in string:
run = paragraph.add_run(char)
run.font.size = Pt(12) # 小四号,12磅
if is_chinese(char):
run.font.name = '宋体'
run._element.rPr.rFonts.set(docx.oxml.ns.qn('w:eastAsia'), '宋体')
else:
run.font.name = 'Times New Roman'
run._element.rPr.rFonts.set(docx.oxml.ns.qn('w:ascii'), 'Times New Roman')
doc.save(__output_file_path)
def read_docx(__file_path):
doc = Document(__file_path)
__strings = []
for paragraph in doc.paragraphs:
current_string = ''
text = paragraph.text.strip()
if len(text) == 0:
continue
else:
current_string += text
__strings.append(current_string) # 添加最后一个字符串
print(__strings)
return __strings
# 输入要读取的 .docx 文件路径
file_path = "源文件"
# 读取 .docx 文件中的字符串
strings = read_docx(file_path)
strings_than = []
# 翻译读取到的字符串
for string_temp in strings:
if string_temp == "\r":
strings_than.append("\r")
elif string_temp == "\n":
strings_than.append("\n")
else:
a = trans.Translator(string_temp)
strings_temp = a.output_translation()
strings_than.append(strings_temp)
# 输出读取到的字符串
print('读取到的字符串:')
print(strings_than)
# 输入要写入的 .docx 文件路径
output_file_path = "目标路径"
# 将字符串按指定格式写入新的 .docx 文件
write_docx(strings_than, output_file_path)
print('文件写入完成!')
下面是翻译模块的设置
import requests
import hashlib
import json
import time
class Translator(object):
def __init__(self, query="hello", to_lang="zh"):
self.app_id = '20231006001838238'
self.app_key = "api'
# 要翻译的字符串以及目标语言
self.query = query
self.to_lang = to_lang
# 对query进行md5加密,并将app_key和salt拼接在一起
self.salt = str(int(time.time()))
self.sign = self.app_id + self.query + self.salt + self.app_key
m = hashlib.md5()
m.update(self.sign.encode('utf-8'))
self.sign = m.hexdigest()
# 构造请求URL
self.url = 'http://api.fanyi.baidu.com/api/trans/vip/translate'
self.params = {
'q': query,
'from': 'auto',
'to': to_lang,
'appid': self.app_id,
'salt': self.salt,
'sign': self.sign
}
def output_translation(self):
time.sleep(1)
response = requests.get(self.url, params=self.params)
result = json.loads(response.content.decode('utf-8'))
# 输出翻译结果
if 'trans_result' in result:
if result['trans_result'][0]['src'] == result['trans_result'][0]['dst']:
return result['trans_result'][0]['src']
else:
return result['trans_result'][0]['src'] + result['trans_result'][0]['dst']
else:
return "翻译失败" + str(result)
if __name__ == '__main__':
a = Translator('hello')
print(a.output_translation())
b = Translator('world')
print(b.output_translation())