python 3 googletrans 초 타 임 스 오류 문제 및 번역 도구 최적화 방안 첨부 소스 코드
구 글 번역 인 터 페 이 스 를 호출 하 는 스 크 립 트 를 쓸 때 항상 오류 가 발생 합 니 다.제 가 사용 하 는 것 은 구 글 trans 라 는 모듈 에서 Translator 의 translate 방법 입 니 다.프로그램 이 실 행 된 후에 방문 시간 초과 오 류 를 보고 합 니 다.
Traceback (most recent call last): File "E:/PycharmProjects/MyProject/Translate/translate_test.py", line 3, in
2.해결 방법:
1.해결책 찾기
여러 가지 자 료 를 찾 아 본 결과 구 글 번역 이 인 터 페 이 스 를 업데이트 했다 는 것 을 알 게 되 었 습 니 다.이전에 사 용 했 던 구 글 trans 는 이미 사용 할 수 없습니다.하지만 인터넷 의 대 신 은 이미 새로운 방법 을 개발 했다.
https://github.com/lushan88a/google_trans_new
이 자리 에서 감 사 드 립 니 다!
2.해결책 사용
cmd 에 다음 명령 을 입력 하면 됩 니 다.
pip install google_trans_new
3.코드(최적화)
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자체 다운로드 가능.
실행 결과
총화
이 편 은 먼저 googletrans 모듈 을 호출 하 는 오류 문 제 를 해결 한 다음 에 새로운 google 번역 모듈 로 코드 를 작 성 했 고 이 글 에서 번역 한 텍스트 길이 가 5000 보다 크 지 않 은 문 제 를 해결 했다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Jupyter 공식 DockerHub에 대한 메모에 기재되어 있다. base-notebook minimal-notebook scipy-notebook tensorflow-notebook datascience-notebook pyspark-notebook all-s...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.