python 3 googletransが時報を超える問題と翻訳ツールの最適化方案にソースを添付します。
5249 ワード
一.問題:
Googleの翻訳インターフェースを呼び出すスクリプトを書く時、いつも間違えました。googletransというモジュールのTranslateを使っています。プログラムが実行されたら、タイムアウトのエラーを報告します。
Traceback(most recent call last):File「E:/Pycharm Project/MyProject/Translate/translate_」test.py「ライン3、in<module>relt=translator.translate(''504;녕녕;세세세騷;?;騷;세;ƍ;ƍ')File」D:\python 3\site-package\google\googles\client.pytranslate(text、dest、src、kwargs)File「D:\python 3\lib\site-packages\googlectures\client.py」、line 78、in_tranlate token=self.token_acquirer.do(text)File「D:\python 3\lib\site-packages\google trans\gtoken.py」,line 194,in do self.uuudate()File"D:\python 3\lib\site-packages\google trans\gtoken.py"line 54,in_udate r=self.client.get File“D:\python 3\lib\site-packages\httpx\uclient.py「line 763、in get timeout=timeout、File」D:\python 3\lib\site-packages\httpx\uclient.py"line 601,in request request,auth=auth,allow_redirects=allow_redirects,timeout=timeout,File“D:\python 3\lib\site-packages\httpx\u 0026 quot;client.py"は、ライン621、in send request、auth=auth、timeout=timeout、allow_redirects=allow_redirects,File“D:\python 3\lib\site-packages\httpx\u 0026 quot;client.py"LINE 648,in send_handling.redirects request,auth=auth,timeout=timeout,history=history File"D:\python 3\lib\site-packages\httpx\\uclient.py"LINE 684,in send_handling.auth reponse=self.send_シングルス.request File「D:\python 3\lib\site-packages\httpx\u 0026 quot;client.py"LINE 719,in send_シングルス.request timeout=timeout.as_dict()は、File"D:\pythone 3\lib\site-packages\httpcore\u 0026 quot;sync\connection_pool.py「line 153、in request method、url、headers=headers、stream=stream、timeout=timeout File」D:\pythone 3\lib\site-packages\tpcore\u 0026 quot;sync\connection.py"line 65,in request self.socket=self.uopen_socket File「D:\python 3\lib\site-packages\http core\u 0026 quot;sync\connection.py"line 86,in_open_socket hostname,port,ssl_context,timeout File"D:\python 3\lib\site-packages\http core\u 0026 quot;backends\sync.py"line 139,in open_tcp_stream return SyncSocketStream(sock=sock)File「D:\python 3\lib\contextlib.py」,line 130,in_exit_uself.gen.throw File「D:\python 3\lib\site-package\http core\u 0026 quot;exceptions.py"line 12,in map_exceptionsライヴto_exc(exc)from None http core.uexceptions.Connect Timeout:timed out
二.解決方法:
1.解決方法を探す
いろいろな資料を調べた結果、googleの翻訳がインタフェースを更新したことが分かりました。以前使っていたgoogle transはもう使えなくなりました。しかし、ネット上のオオカミさんはもう新しい方法を開発しました。
https://github.com/lushan88a/google_transnew
この道で感謝します。
2.使用解決方法
cmdに以下のコマンドを入力すればいいです。
pip install googleググtransnew
三.コード(最適化)
自分でダウンロードできます。
四.運転結果
五.まとめ
このページではまずgoogle transモジュールを呼び出してエラーを報告する問題を解決しました。そして、新しいgoogle翻訳モジュールを使ってコードを作成しました。そして、私のこの文章の中で翻訳テキストの長さは5000を超えてはいけないという問題を解決しました。
Googleの翻訳インターフェースを呼び出すスクリプトを書く時、いつも間違えました。googletransというモジュールのTranslateを使っています。プログラムが実行されたら、タイムアウトのエラーを報告します。
Traceback(most recent call last):File「E:/Pycharm Project/MyProject/Translate/translate_」test.py「ライン3、in<module>relt=translator.translate(''504;녕녕;세세세騷;?;騷;세;ƍ;ƍ')File」D:\python 3\site-package\google\googles\client.pytranslate(text、dest、src、kwargs)File「D:\python 3\lib\site-packages\googlectures\client.py」、line 78、in_tranlate token=self.token_acquirer.do(text)File「D:\python 3\lib\site-packages\google trans\gtoken.py」,line 194,in do self.uuudate()File"D:\python 3\lib\site-packages\google trans\gtoken.py"line 54,in_udate r=self.client.get File“D:\python 3\lib\site-packages\httpx\uclient.py「line 763、in get timeout=timeout、File」D:\python 3\lib\site-packages\httpx\uclient.py"line 601,in request request,auth=auth,allow_redirects=allow_redirects,timeout=timeout,File“D:\python 3\lib\site-packages\httpx\u 0026 quot;client.py"は、ライン621、in send request、auth=auth、timeout=timeout、allow_redirects=allow_redirects,File“D:\python 3\lib\site-packages\httpx\u 0026 quot;client.py"LINE 648,in send_handling.redirects request,auth=auth,timeout=timeout,history=history File"D:\python 3\lib\site-packages\httpx\\uclient.py"LINE 684,in send_handling.auth reponse=self.send_シングルス.request File「D:\python 3\lib\site-packages\httpx\u 0026 quot;client.py"LINE 719,in send_シングルス.request timeout=timeout.as_dict()は、File"D:\pythone 3\lib\site-packages\httpcore\u 0026 quot;sync\connection_pool.py「line 153、in request method、url、headers=headers、stream=stream、timeout=timeout File」D:\pythone 3\lib\site-packages\tpcore\u 0026 quot;sync\connection.py"line 65,in request self.socket=self.uopen_socket File「D:\python 3\lib\site-packages\http core\u 0026 quot;sync\connection.py"line 86,in_open_socket hostname,port,ssl_context,timeout File"D:\python 3\lib\site-packages\http core\u 0026 quot;backends\sync.py"line 139,in open_tcp_stream return SyncSocketStream(sock=sock)File「D:\python 3\lib\contextlib.py」,line 130,in_exit_uself.gen.throw File「D:\python 3\lib\site-package\http core\u 0026 quot;exceptions.py"line 12,in map_exceptionsライヴto_exc(exc)from None http core.uexceptions.Connect Timeout:timed out
二.解決方法:
1.解決方法を探す
いろいろな資料を調べた結果、googleの翻訳がインタフェースを更新したことが分かりました。以前使っていたgoogle transはもう使えなくなりました。しかし、ネット上のオオカミさんはもう新しい方法を開発しました。
https://github.com/lushan88a/google_transnew
この道で感謝します。
2.使用解決方法
cmdに以下のコマンドを入力すればいいです。
pip install googleググtransnew
三.コード(最適化)
from google_trans_new import google_translator
from multiprocessing.dummy import Pool as ThreadPool
import time
import re
"""
google_trans_new
len(text)>5000
"""
class Translate(object):
def __init__(self):
#
self.txt_file='./test.txt'
self.aim_language='zh-CN'
#
def read_txt(self):
with open(self.txt_file, 'r',encoding='utf-8')as f:
txt = f.readlines()
return txt
# ,
def cut_text(self,text):
# , 5000
if len(text)==1:
str_text = ''.join(text).strip()
# 5000
if len(str_text)>5000:
# 5000
result = re.findall('.{5000}', str_text)
return result
else:
# 5000, text
return text
"""
,
(1) 5000
(2) 5000, 5000
"""
else:
result = []
for line in text:
# (1)
if len(line)<5000:
result.append(line)
else:
# (2) , ,
cut_str=re.findall('.{5000}', line)
result.extend(cut_str)
return result
def translate(self,text):
if text:
aim_lang = self.aim_language
try:
t = google_translator(timeout=10)
translate_text = t.translate(text, aim_lang)
print(translate_text)
return translate_text
except Exception as e:
print(e)
def main():
time1=time.time()
#
pool = ThreadPool(8)
trans = Translate()
txt = trans.read_txt()
texts = trans.cut_text(txt)
try:
pool.map(trans.translate, texts)
except Exception as e:
raise e
pool.close()
pool.join()
time2 = time.time()
print(" {} , {:.2f} s".format(len(texts),time2 - time1))
if __name__ == "__main__" :
main()
テストテキストを置いてきました。http://xiazai.jb51.net/202012/yuanma/test.rar。自分でダウンロードできます。
四.運転結果
五.まとめ
このページではまずgoogle transモジュールを呼び出してエラーを報告する問題を解決しました。そして、新しいgoogle翻訳モジュールを使ってコードを作成しました。そして、私のこの文章の中で翻訳テキストの長さは5000を超えてはいけないという問題を解決しました。