python将复杂格式中文文本文件翻译为英文

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 目录

    文章目录

    前言

    一、注册百度翻译账号,获取id和key

    二、翻译文本文件

    1.调用百度翻译api

    2.将翻译后的文本文件二次处理

    总结


本文可以将复杂格式的文本文件中译英,英译中。


一、注册百度翻译账号,获取id和key

python将复杂格式中文文本文件翻译为英文_第1张图片

注册登录百度翻译账号,然后开通文档翻译服务,会在页面最下方看到自己的appid以及自己账号的密钥。

 

二、翻译文本文件

1.调用百度翻译api

代码如下:


import hashlib
import time
import requests
import os

appid = '***********' # Get your appid from this link.https://fanyi-api.baidu.com/api/trans/product/desktop
seckey = '************' # Get your seckey from this link.https://fanyi-api.baidu.com/api/trans/product/desktop
file = 'D:/01.txt' # Full path of local file.
request_url = 'http://fanyi-api.baidu.com/api/trans/vip/doctrans' # API service url.

params = {
    'appid' : appid,
    'from' : 'zh',
    'to' : 'en',
    'timestamp' : str(int(time.time())),
    'type' : 'txt',
    'file' : file
}

# Splicing request parameters.
def get_params():
    params_str = ''
    for key in sorted(params):
        params_str += key
        params_str += '='
        params_str += params[key]
        params_str += '&'
    return params_str

# Generating an MD5 checksum of a file.
def md5_file(file):
     with open(file, "rb") as f:
        data = f.read()
        md5 = hashlib.md5(data)
        return md5.hexdigest()

# Send translation request.
def translate():
    str = get_params()+md5_file(file)+seckey
    params['sign'] = hashlib.md5(str.encode("utf-8")).hexdigest()
    # Upload the file with 
    files = {'file':(os.path.basename(file), open(file, 'rb'), "multipart/form-data")}
    response = requests.post(request_url, files=files, data=params)
    if response:
        return response.json()
    else:
        return 'error'

if __name__ == '__main__':
    print(translate())

我这里就不放我的appid以及密钥了,每个用户每个月有一定量的免费调用次数,对于开发者来说已经够用了。

运行程序之后就可以在官网下载翻译好的文件了。

python将复杂格式中文文本文件翻译为英文_第2张图片

但是当我下载翻译好的文件之后我人傻了,他竟然将阿拉伯数字也翻译为英文了,而且还给我文档的空行给删了,害,还得再想办法二次处理。

python将复杂格式中文文本文件翻译为英文_第3张图片

python将复杂格式中文文本文件翻译为英文_第4张图片

 

 

 

2.将翻译后的文本文件二次处理

1.将所有英文数字再改为阿拉伯数字,代码如下:

import os

lines = []
f = open("D:\\d.txt", 'r',encoding='UTF-8')  # 原始文件

count = 0
count1=0
for line in f:
    # 行数计数
    count += 1
    if (count % 3!=1):
        lines.append(line)
    # 在第二行插入文本,原始文本每三行为一段
    if (count % 3 == 1):
        count1+=1
        lines.append(str(count1)+"\n")
f.close()

s = ''.join(lines)
f = open("d:\\d.txt", 'w+')  # 重新写入文件
f.write(s)
f.close()
del lines[:]  # 清空列表

2.在把之前的空行补上

import os

lines = []
f = open("D:\\demo1.txt", 'r')  # 原始文件

count = 0
for line in f:
    # 行数计数
    count += 1
    lines.append(line)
    # 在第二行插入文本,原始文本每三行为一段
    if (count % 3 == 0):
        lines.append("\n")
f.close()

s = ''.join(lines)
f = open("d:\\demo1.txt", 'w+')  # 重新写入文件
f.write(s)
f.close()
del lines[:]  # 清空列表

好啦,大功告成!

python将复杂格式中文文本文件翻译为英文_第5张图片


 

总结

本文以txt文件为例进行翻译,当然他也支持各种文档翻译,只需把代码中的txt字样全部换成doc、docx等就好了。

你可能感兴趣的:(python,pandas,开发语言,人工智能,数据结构)