Python google-trans-new translate 引发错误:JSONDecodeError:额外数据:
Posted
技术标签:
【中文标题】Python google-trans-new translate 引发错误:JSONDecodeError:额外数据:【英文标题】:Python google-trans-new translate raises error: JSONDecodeError: Extra data: 【发布时间】:2021-09-13 18:47:02 【问题描述】:在处理 Google translate API 时,我发现有时 google 无法翻译任何内容,但它不断引发相同的异常:额外数据。
我在互联网上搜索过,我发现一个理论说我被谷歌翻译以某种方式屏蔽,或者因为翻译数据超过 5k 字符限制而被屏蔽。 here 是一个解决方案,但我认为这不是解决它的正确方法。
我的代码不是新的,已经正常工作了大约1个月,但是几天前,它开始报错,我那个时候我不知道如何解决它,所以我把它留了一个晚上解决它后来,但是当我醒来时,它又开始工作了,我认为这是由谷歌或其他原因引起的错误所以我忘了它,但同一天,晚上10点左右,它停止工作。我想说的是它非常不一致,有时有效,有时无效。
如何重现: 使用指定的python版本从google_trans_new包网站运行示例代码。
这是我的代码:
from google_trans_new import google_translator
translator = google_translator()
translate_text = translator.translate('สวัสดีจีน',lang_tgt='en')
print(translate_text)
输出:
Traceback (most recent call last):
File "c:/Users/my_name/MyApp.py", line 105, in <module>
translate_text = translator.translate('สวัสดีจีน',lang_tgt='en')
File "C:\Users\my_name\AppData\Local\Programs\Python\Python37\lib\site-packages\google_trans_new\google_trans_new.py", line 188, in translate
raise e
File "C:\Users\my_name\AppData\Local\Programs\Python\Python37\lib\site-packages\google_trans_new\google_trans_new.py", line 152, in translate
response = json.loads(response)
File "C:\Users\my_name\AppData\Local\Programs\Python\Python37\lib\json\__init__.py", line 348, in loads
return _default_decoder.decode(s)
File "C:\Users\my_name\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 341, in decode
raise JSONDecodeError("Extra data", s, end)
json.decoder.JSONDecodeError: Extra data: line 1 column 371 (char 370)
我已经在我的电脑、我的 Heroku 网络应用程序(用于 discord bot 和 line bot)和我朋友的笔记本电脑上进行了测试。他们都提出了同样的错误。
我的环境:
Python version: 3.7.0 (google-trans-new specified >= 3.6)
Heroku Python version: 3.8.10
【问题讨论】:
【参考方案1】:已经有一个开放的git issue 用于此。解决方法是:
更改 google_trans_new/google_trans_new.py 中的第 151 行,即:
response = (decoded_line + ']')
到response = decoded_line
您只需要克隆 google_trans_new 存储库并编辑 google_trans_new.py 上的第 151 行,如上所述。
使用编辑后的代码和您的输入 (สวัสดีจีน) 完成测试:
【讨论】:
好的,感谢您提供的解决方法。那个 git 问题只有 3 天,我无法为我的 Heroku 应用程序执行解决方法,只是因为我无法编辑源代码。 @Xia 我明白了。已经有pending commit,希望楼主采纳! 这只能部分解决这个问题。如果您需要使用“检测”方法,则需要在第 236 行附近再次应用此修复(我稍微更改了代码,因此确切的行号可能在一个小的偏移量中) 如果它不起作用,也许你应该在安装后卸载 google_trans_new。pip uninstall google_trans_new
然后,如果由于访问模块而无法正常工作,请将其移至根目录,如果它不起作用,请使用 import google_trans_new as gtn
和 translator = gtn.google_translator()
而不是 google_translator()
以上是关于Python google-trans-new translate 引发错误:JSONDecodeError:额外数据:的主要内容,如果未能解决你的问题,请参考以下文章