逐行翻译的解决

是为了完成一个单词列表的制作

功能简单,需要百度翻译,个人是免费的

百度翻译开放平台获取个人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())

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值