文件翻译

目的

导师录制慕课,需要实现双语字幕。导师给的是英文txt文件如下图:
原文件
要完成的目标是借用百度翻译生成中文如下图
在这里插入图片描述

整体思路

读取txt文件 列表形式
调用API
翻译结果转化为列表
中英文列表混合
写入

单步实现

1、读取文件

# 读取TXT文档 readlines() 返回的是列表, readline() 读取每一行 ,read()返回的是字符串。
def read_txt(path):
    '''实现TXT文档的读取,一次将内容全部取出'''
    content = ''
    with open(path) as f:
        content = f.readlines()
    return content
# 也可以用readline()读取每一行
c=read_txt('1-5.txt')
#print(c)

2、调用百度翻译API

参考:注册申请百度翻译接口
自己结合需求更改后的代码:

#百度通用翻译API,不包含词典、tts语音合成等资源,如有相关需求请联系translate_api@baidu.com
# coding=utf-8
import http.client
import hashlib
import urllib
import random
import json
import time
from pip._vendor.distlib.compat import raw_input
# 百度appid和密钥需要通过注册百度【翻译开放平台】账号后获得
appid = '********'        # 填写你的appid
secretKey = '********'    # 填写你的密钥
 
httpClient = None
myurl = '/api/trans/vip/translate'  # 通用翻译API HTTP地址
 
fromLang = 'auto'       # 原文语种
toLang = 'zh'           # 译文语种
salt = random.randint(32768, 65536)
# 手动录入翻译内容,q存放
#q = raw_input("please input the word you want to translate:")
list_new = []
for line in c:
    q=line
    sign = appid + q + str(salt) + secretKey
    sign = hashlib.md5(sign.encode()).hexdigest()
    myurl = myurl + '?appid=' + appid + '&q=' + urllib.parse.quote(q) + '&from=' + fromLang + \
        '&to=' + toLang + '&salt=' + str(salt) + '&sign=' + sign 
    # try except 是异常处理机制。建立会话,返回结果
    try:
        httpClient = http.client.HTTPConnection('api.fanyi.baidu.com')
        httpClient.request('GET', myurl)
        # response是HTTPResponse对象
        response = httpClient.getresponse()
        result_all = response.read().decode("utf-8")
        result = json.loads(result_all)
        # 返回的结果只取翻译后的部分
        D = result['trans_result'][0]['dst']
        #加换行符是写入txt时需要
        D = D + '\n'
        #返回的D是字符串,需要转化成列表
        D=D.split('.')
        #合成列表
        list_new.extend(D)
        #print (D)
        # 延时函数 当QPS每秒查询率 不够用是要用延时函数,即使用标准版时要用延时函数,使用高级版不需要
        #time.sleep(1) 
    except Exception as e:
        print (e) 
    finally:
        if httpClient:
            httpClient.close()

3、中英文列表混合,方便写入一个文件

zip() 函数是将两个列表元素一一对应生成元组;
chain.from_iterable()是将元组返回列表

#导入 chain
from itertools import chain
F=list(chain.from_iterable(zip(c, list_new)))
#print(F)

4、写入操作

# 写TXT文档
def write_txt(path,content):
    '''实现TXT文档的写方法'''
    with open(path,'a+') as f:
        f.write(content)
for i in F:
    write_txt("1-5-1.txt",i)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值