Python實現中英文翻譯方法總結


#Author:Chenglong Qian
#Copyright :Chenglong Qian
import json
import requests
import re
import os
import sys

num=392
def translator(str):
    """
    input : str 需要翻譯的字符串
    output:translation 翻譯后的字符串
    有每小時1000次訪問的限制
    """
    global  num;
    num=num+1
    print("Program has process %d times "%num)
    # API
    url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&smartresult=ugc&sessionFrom=null'
    # 傳輸的參數, i為要翻譯的內容
    key = {
        'type': "AUTO",
        'i': str,
        "doctype": "json",
        "version": "2.1",
        "keyfrom": "fanyi.web",
        "ue": "UTF-8",
        "action": "FY_BY_CLICKBUTTON",
        "typoResult": "true"
    }
    # key 這個字典為發送給有道詞典服務器的內容
    response = requests.post(url, data=key)
    # 判斷服務器是否相應成功
    if response.status_code == 200:
        # 通過 json.loads 把返回的結果加載成 json 格式
        result = json.loads(response.text)
#         print ("輸入的詞為:%s" % result['translateResult'][0][0]['src'])
#         print ("翻譯結果為:%s" % result['translateResult'][0][0]['tgt'])
        translation = result['translateResult'][0][0]['tgt']
        return translation
    else:
        print("有道詞典調用失敗")
        # 相應失敗就返回空
        return None



def file_translator(file_name):
    file = os.listdir(file_name)
    for i in file:
        if i.endswith('.srt'):
            filepath = os.path.join(dir, i)
            name = i[:-4]
            with open(filepath) as f:
                with open(name + "-translate.srt", 'w', encoding='utf-8') as f_trans:
                    content = f.readlines()#讀取文件
                    transcontent = ''
                    for i in content:#遍歷每一行
                        pattern = r'.*?([>a-zA-Z].*?[a-zA-Z].*?)\n'
                        flag = re.search(pattern, i)
                        if flag !=None:
                            transcontent=translator(flag.string)
                            transcontent=transcontent+r'\n'
                            f_trans.write(transcontent)
                            f_trans.write(i)
                        else:
                            f_trans.write(i)





dir=r'D:\srt'
def main():
    global num
    if num<950:
        file_translator(dir)




main()

 

https://blog.csdn.net/qq_36771895/article/details/90510742

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM