Pythonはオンライン翻訳機能を実現します

大量の変換が必要なデータの場合、手動変換は遅すぎ、バッチ変換にはソフトウェアが必要です。

1. 360の翻訳を使用

def fanyi_word_cn(string):
 url="https://fanyi.so.com/index/search"
 # db_path ='./db/tasks.db'
 Form_Data={}
 
 # ここに翻訳する英語を入力してください
 Form_Data['query']= string
 Form_Data['eng']='1'
 
 # urlencodeを使用して、辞書を文字列に変換します。#サーバーは辞書を受け入れず、文字列とバイナリのみを受け入れます
 data= parse.urlencode(Form_Data).encode('utf-8')
 
 # サーバーで識別可能なデータに変更した後、応答データを要求して取得します
 response= request.urlopen(url, data)
 
 html= response.read().decode("utf-8")#デコード方法
 
 # javaのオブジェクト(コレクション)と配列(要素はコレクション),負荷はPython辞書に変換できます
 result= json.loads(html)
 
 # 辞書は、キー名データの下でキー名fanyiを取得します,その価値を得る
 translate_result= result["data"]["fanyi"]
 # print(translate_result)return translate_result

2. Google独自のAPIを使用して翻訳

APIモジュールをインストールする必要があることに注意してください。

pip install translator

# google api, per 1000 words everyday
def translate_cn_api(content):
 translator=Translator(to_lang="zh")
 translation = translator.translate(content)return translation

**3. Googleが提供するAPIにはバイト制限があり、1日あたり1000ワードしか翻訳できないため、これを行うためにGoogleTranslateが使用されます。 ****

備考:環境への備え

3.1 java環境

3.2 execjsモジュールをインストールします

pip install PyExecJS

3.3 2つの実装モジュール

HandleJs.py

# coding=utf-8import execjs
 
classPy4Js(): 
 
 def __init__(self): 
 self.ctx = execjs.compile(""" 
 functionTL(a){var k ="";var b =406644;var b1 =3293161072;var jd =".";var $b ="+-a^+6";var Zb ="+-3^+b+-f";for(var e =[], f =0, g =0; g < a.length; g++){var m = a.charCodeAt(g);128   m ? e[f++]= m :(2048   m ? e[f++]= m    6|192:(55296==(m &64512)&& g +1< a.length &&56320==(a.charCodeAt(g +1)&64512)?(m =65536+((m &1023)<<10)+(a.charCodeAt(++g)&1023), 
 e[f++]= m    18|240, 
 e[f++]= m    12&63|128): e[f++]= m    12|224, 
 e[f++]= m    6&63|128), 
 e[f++]= m &63|128)} 
 a = b;for(f =0; f < e.length; f++) a += e[f], 
 a =RL(a, $b); 
 a =RL(a, Zb); 
 a ^= b1 ||0;0   a &&(a =(a &2147483647)+2147483648); 
 a %=1E6;return a.toString()+ jd +(a ^ b)};functionRL(a, b){var t ="a";var Yb ="+";for(var c =0; c < b.length -2; c +=3){var d = b.charAt(c +2), 
 d = d  = t ? d.charCodeAt(0)-87:Number(d), 
 d = b.charAt(c +1)== Yb ? a     d: a << d; 
 a = b.charAt(c)== Yb ? a + d &4294967295: a ^ d 
 } return a 
 }""") 
  
 def getTk(self,text):return self.ctx.call("TL",text)

main.py

# coding=utf-8
# import urllib.request
import urllib2
from HandleJs import Py4Js 
from translate import Translator
import requests
# Example:find_last('aaaa','a') returns 3
# Make sure your procedure has a return statement.
def find_last(string,str):
last_position=-1while True:
position=string.find(str,last_position+1)if position==-1:return last_position
last_position=position
def open_url(url): 
headers ={'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:23.0) Gecko/20100101 Firefox/23.0'} 
req = urllib2.Request(url = url,headers=headers) 
response = urllib2.urlopen(req) 
data = response.read().decode('utf-8')return data 
def translate_core(content,tk, language):iflen(content)4891:print("too long byte  4891")return
content = urllib2.quote(content)if language =='de':
url ="http://translate.google.cn/translate_a/single?client=t"+"&sl=de&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca"+"&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1"+"&srcrom=0&ssel=0&tsel=0&kc=2&tk=%s&q=%s"%(tk,content)else:
url ="http://translate.google.cn/translate_a/single?client=t"+"&sl=en&tl=zh-CN&hl=zh-CN&dt=at&dt=bd&dt=ex&dt=ld&dt=md&dt=qca"+"&dt=rw&dt=rm&dt=ss&dt=t&ie=UTF-8&oe=UTF-8&clearbtn=1&otf=1&pc=1"+"&srcrom=0&ssel=0&tsel=0&kc=2&tk=%s&q=%s"%(tk,content) 
# 結果はjson形式です
result =open_url(url) 
# print('results:'+ result)iflen(content)<10:
end = result.find("\",")if end   4:return result[4:end]else:
result_all =''if language =='de':
result_all = result.split(',null,"de",null,null,')[0].replace('[[','').replace(']]',']')[1:]else:
result_all = result.split(',null,"en",null,null,')[0].replace('[[','').replace(']]',']')[1:]
# print('result_all:'+ result_all)
output_cn =''
# 中国のフィールドを解析してスプライスする
list = result_all.split('],[')for i inrange(len(list)-1):
end = list[i].find("\",")
tmp_buf = list[i][1:end]
output_cn = output_cn + tmp_buf
return output_cn
def translate_normal(content, language): 
js =Py4Js() 
tk = js.getTk(content)
# print('english:'+ content)
cn_buf =translate_core(content,tk, language)
# print('Chinese:'+ cn_buf)return cn_buf
def translate_cn(content, language):
LEN_LIMIT =4891
all_len =len(content)print('en:'+ content)if all_len   LEN_LIMIT:
content_cn =''while True:
content_limit = content[0:LEN_LIMIT]
limit_end =find_last(content_limit,'.')+1
# print('limit_end:'+str(limit_end))if limit_end ==0:
limit_end =find_last(content_limit,' ')+1if limit_end ==0:
limit_end = LEN_LIMIT
content_en = content[0:limit_end]
leave_len = all_len - limit_end
if content_en =='':break;
# print('content_en:'+ content_en)
content_cn = content_cn +translate_normal(content_en, language);
content = content[limit_end:]return content_cn
else:returntranslate_normal(content, language)
# google api, per 1000 words everyday
def translate_cn_api(content):
translator=Translator(to_lang="zh")
translation = translator.translate(content)return translation
if __name__ =="__main__": 
content ="""Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Namespaces are one honking great idea --let's do more of those!"""
#
content =""" 
IT-Grundschutz M5.131: Absicherung von IP-Protokollen unter Windows Server 2003."""
# content ='High'
content ="""Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Namespaces are one honking great idea --let's do more of those!"""
language ='en'
test =translate_cn(content.replace('\n',''), language)print('ok:'+ test)
# content ='Checks version'

ドイツ語から中国語への翻訳と英語から中国語への翻訳はここで実現されます。

以上が本稿の内容ですので、皆様のご勉強に役立てていただければ幸いです。

Recommended Posts

Pythonはオンライン翻訳機能を実現します
Pythonはオンライン翻訳を実現します
Pythonはオンラインマイクロブログデータの視覚化を実現します
Pythonは画像認識カー機能を実現
Pythonはudp送信画像機能を実現します
Python enumerate()関数
python3はマスク描画の機能を実現します
Python関数バッファー
Pythonは宇宙船戦争を実現します
Python | Flaskがログイン機能を実現
Pythonカスタム関数の基本
Pythonの結合関数
Python組み込み関数-compile()
Python関数の基礎学習
Pythonデータ分析-関数の適用
Pythonは写真のステッチを実現します
Python3組み込み関数table.md
Pythonプリントプリントタイマー機能
Pythonは戦車戦を実現
Pythonの上位関数の使用法の概要!
Python3は飛行機戦争ゲームを実現します
Pythonはリンゴを食べるゲームを実現します
Pythonは推測ゲームを実現します
Pythonは3Dマップの視覚化を実現します
Pythonはフェイスサインインシステムを実現します
Pythonトルネードアップロードファイル機能
Pythonマジック関数eval()学習
PythonがFTP機能を実装する方法
Pythonは写真のバッチ命名を実現します
Pythonは画像スティッチング機能を実装しています
Pythonの上位関数の使用法の概要!
Python |再帰を使用して解決する関数
Pythonがメール機能を実装する方法
Pythonが関数のオーバーロードをサポートしないのはなぜですか?
Pythonは名刺管理システムを実現
pythonに関数のオーバーロードはありますか
Pythonの3日目の1行関数の学習
Python関数の定義とパラメーターの説明
PythonATM関数の実装コード例
Python3は名刺管理システムを実現
PythonはAIフェイスチェンジ機能を実装しています
Pythonはエクスプレス価格クエリシステムを実現します
Pythonはftpファイル転送機能を実装しています
Pythonがタイマー機能を実装する方法
Pythonはコンソール出力カラーフォントを実現します