最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python3 googletrans超時(shí)報(bào)錯(cuò)問題及翻譯工具優(yōu)化方案 附源碼

 更新時(shí)間:2020年12月23日 11:47:39   作者:懷淰メ  
這篇文章主要介紹了python3 googletrans超時(shí)報(bào)錯(cuò)問題及翻譯工具優(yōu)化方案 附源碼,本文給大家分享解決方法,通過實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下

一. 問題:

在寫調(diào)用谷歌翻譯接口的腳本時(shí),老是報(bào)錯(cuò),我使用的的是googletrans這個(gè)模塊中Translator的translate方法,程序運(yùn)行以后會(huì)報(bào)訪問超時(shí)錯(cuò)誤:

Traceback (most recent call last): File "E:/PycharmProjects/MyProject/Translate/translate_test.py", line 3, in <module> result=translator.translate('안녕하세요.') File "D:\python3\lib\site-packages\googletrans\client.py", line 182, in translate data = self._translate(text, dest, src, kwargs) File "D:\python3\lib\site-packages\googletrans\client.py", line 78, in _translate token = self.token_acquirer.do(text) File "D:\python3\lib\site-packages\googletrans\gtoken.py", line 194, in do self._update() File "D:\python3\lib\site-packages\googletrans\gtoken.py", line 54, in _update r = self.client.get(self.host) File "D:\python3\lib\site-packages\httpx\_client.py", line 763, in get timeout=timeout, File "D:\python3\lib\site-packages\httpx\_client.py", line 601, in request request, auth=auth, allow_redirects=allow_redirects, timeout=timeout, File "D:\python3\lib\site-packages\httpx\_client.py", line 621, in send request, auth=auth, timeout=timeout, allow_redirects=allow_redirects, File "D:\python3\lib\site-packages\httpx\_client.py", line 648, in send_handling_redirects request, auth=auth, timeout=timeout, history=history File "D:\python3\lib\site-packages\httpx\_client.py", line 684, in send_handling_auth response = self.send_single_request(request, timeout) File "D:\python3\lib\site-packages\httpx\_client.py", line 719, in send_single_request timeout=timeout.as_dict(), File "D:\python3\lib\site-packages\httpcore\_sync\connection_pool.py", line 153, in request method, url, headers=headers, stream=stream, timeout=timeout File "D:\python3\lib\site-packages\httpcore\_sync\connection.py", line 65, in request self.socket = self._open_socket(timeout) File "D:\python3\lib\site-packages\httpcore\_sync\connection.py", line 86, in _open_socket hostname, port, ssl_context, timeout File "D:\python3\lib\site-packages\httpcore\_backends\sync.py", line 139, in open_tcp_stream return SyncSocketStream(sock=sock) File "D:\python3\lib\contextlib.py", line 130, in __exit__ self.gen.throw(type, value, traceback) File "D:\python3\lib\site-packages\httpcore\_exceptions.py", line 12, in map_exceptions raise to_exc(exc) from None httpcore._exceptions.ConnectTimeout: timed out

二. 解決方法:

 1.尋找解決方法

經(jīng)過多方資料查找,最后才知道google翻譯對(duì)接口進(jìn)行了更新,之前用的googletrans已經(jīng)不能用了。但是網(wǎng)上大神已經(jīng)開發(fā)出了新的方法

https://github.com/lushan88a/google_trans_new

在此道一聲感謝!

2.使用解決方法

在cmd中輸入以下指令即可。

pip install google_trans_new

三. 代碼(優(yōu)化)

from google_trans_new import google_translator
from multiprocessing.dummy import Pool as ThreadPool
import time
import re
"""
此版本調(diào)用最新版google_trans_new
使用多線程訪問谷歌翻譯接口
能夠翻譯len(text)>5000的文本
"""
class Translate(object):
 def __init__(self):
 	#初始化翻譯文本路徑以及翻譯目標(biāo)語言
  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
	
	#進(jìn)行文本處理,此為優(yōu)化
 def cut_text(self,text):
  #如果只是一行,就切割成5000字一次來翻譯
  if len(text)==1:
   str_text = ''.join(text).strip()
   #篩選是一行但是文本長度大于5000
   if len(str_text)>5000:
    #使用正則表達(dá)式切割超長文本為5000一段的短文本
    result = re.findall('.{5000}', str_text)
    return result
   else:
    #如果文本為一行但是這一行文本長度小于5000,則直接返回text
    return text
   """
   如果不止一行,加以判斷
    (1)每行字符數(shù)都小于5000
   (2)有的行字符數(shù)小于5000,有的行字符數(shù)大于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("一共翻譯了 {} 個(gè)句子,消耗了 {:.2f} s".format(len(texts),time2 - time1))

if __name__ == "__main__" :
 main()

測(cè)試文本我放在了:http://xiazai.jb51.net/202012/yuanma/test.rar

可自行下載。

四. 運(yùn)行結(jié)果

在這里插入圖片描述

五. 總結(jié)

本篇首先解決了調(diào)用googletrans模塊的報(bào)錯(cuò)問題,然后使用新的google翻譯模塊編寫了代碼,并且解決了我這篇文章中翻譯文本長度不能大于5000的問題。

相關(guān)文章

  • 使用Python實(shí)現(xiàn)圖片和base64轉(zhuǎn)換工具

    使用Python實(shí)現(xiàn)圖片和base64轉(zhuǎn)換工具

    這篇文章主要為大家詳細(xì)介紹了如何使用Python中的base64模塊編寫一個(gè)工具,可以實(shí)現(xiàn)圖片和Base64編碼之間的轉(zhuǎn)換,感興趣的小伙伴可以了解下
    2025-02-02
  • Django ORM多對(duì)多查詢方法(自定義第三張表&ManyToManyField)

    Django ORM多對(duì)多查詢方法(自定義第三張表&ManyToManyField)

    今天小編就為大家分享一篇Django ORM多對(duì)多查詢方法(自定義第三張表&ManyToManyField),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Python提取PDF中的圖片的實(shí)現(xiàn)示例

    Python提取PDF中的圖片的實(shí)現(xiàn)示例

    本文主要介紹了Python提取PDF中的圖片的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • pycharm顯示遠(yuǎn)程圖片的實(shí)現(xiàn)

    pycharm顯示遠(yuǎn)程圖片的實(shí)現(xiàn)

    這篇文章主要介紹了pycharm顯示遠(yuǎn)程圖片的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • Python Django框架介紹之模板標(biāo)簽及模板的繼承

    Python Django框架介紹之模板標(biāo)簽及模板的繼承

    今天給大家?guī)鞵ython Django框架的相關(guān)知識(shí),文中對(duì)模板標(biāo)簽及模板的繼承介紹的非常詳細(xì),對(duì)正在學(xué)習(xí)python的小伙伴們有很好地幫助,需要的朋友可以參考下
    2021-05-05
  • 淺談Python黑帽子取代netcat

    淺談Python黑帽子取代netcat

    本篇文章通過一個(gè)小小實(shí)例給大家分析了Python黑帽子取代netcat的過程以及相關(guān)知識(shí)點(diǎn),對(duì)此有興趣的朋友可以學(xué)習(xí)下。
    2018-02-02
  • Python中base64編碼與解碼詳解

    Python中base64編碼與解碼詳解

    本文主要介紹了Python2和Python3中使用base64加密方式的區(qū)別,Python3中字符為unicode編碼,而b64encode函數(shù)的參數(shù)為byte類型,所以需要先進(jìn)行轉(zhuǎn)碼
    2024-11-11
  • python如何為list實(shí)現(xiàn)find方法

    python如何為list實(shí)現(xiàn)find方法

    這篇文章主要介紹了python如何為list實(shí)現(xiàn)find方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Python基于Twilio及騰訊云實(shí)現(xiàn)國際國內(nèi)短信接口

    Python基于Twilio及騰訊云實(shí)現(xiàn)國際國內(nèi)短信接口

    這篇文章主要介紹了Python基于Twilio及騰訊云實(shí)現(xiàn)國際國內(nèi)短信接口,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • scrapy中如何設(shè)置應(yīng)用cookies的方法(3種)

    scrapy中如何設(shè)置應(yīng)用cookies的方法(3種)

    這篇文章主要介紹了scrapy中如何設(shè)置應(yīng)用cookies的方法(3種),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09

最新評(píng)論

乃东县| 鹤壁市| 尼勒克县| 苏尼特左旗| 石景山区| 中西区| 平安县| 宁河县| 晋江市| 秦皇岛市| 吉林市| 潍坊市| 文登市| 崇义县| 延长县| 黎平县| 双桥区| 巩义市| 库伦旗| 泾阳县| 巴东县| 资溪县| 怀柔区| 淮南市| 婺源县| 竹山县| 靖西县| 页游| 尚志市| 思茅市| 舒兰市| 永康市| 上高县| 安溪县| 建德市| 绥棱县| 临汾市| 五寨县| 定南县| 临海市| 石楼县|