Python google-trans-new translate raises error: JSONDecodeError: Extra data:
Python google-trans-new translate raises error: JSONDecodeError: Extra data:
在处理 Google translate API 时,我发现有时 google 无法翻译任何内容,同时它不断引发相同的异常:额外数据。
我在网上搜索了一下,我发现有一种说法是我被Google translate 以某种方式屏蔽了,或者因为翻译数据超过了 5k 字符的限制而被屏蔽了。
here 是一个解决方案,但我认为这不是解决问题的正确方法。
我的代码不是新的,它已经正常工作了大约 1 个月,但是几天前,它开始出现错误,我当时不知道如何解决,所以我把它留了一夜稍后解决,但是当我醒来时,它又可以工作了,我以为是 google 什么的导致的错误所以我就忘了它,但是在同一天,晚上 10 点左右,它停止工作了。我想说的是它非常不一致,有时有效有时无效。
如何重现:
运行 来自 google_trans_new 软件包网站的示例代码,具有指定的 python 版本。
这是我的代码:
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
已经有一个开放的git issue。解决方法是:
Change line 151 in google_trans_new/google_trans_new.py which is:
response = (decoded_line + ']')
to response = decoded_line
您只需克隆 google_trans_new 存储库并编辑 google_trans_new.py 上的第 151 行,如上所述。
使用编辑后的代码和您的输入完成测试 (สวัสดีจีน):
在处理 Google translate API 时,我发现有时 google 无法翻译任何内容,同时它不断引发相同的异常:额外数据。
我在网上搜索了一下,我发现有一种说法是我被Google translate 以某种方式屏蔽了,或者因为翻译数据超过了 5k 字符的限制而被屏蔽了。 here 是一个解决方案,但我认为这不是解决问题的正确方法。
我的代码不是新的,它已经正常工作了大约 1 个月,但是几天前,它开始出现错误,我当时不知道如何解决,所以我把它留了一夜稍后解决,但是当我醒来时,它又可以工作了,我以为是 google 什么的导致的错误所以我就忘了它,但是在同一天,晚上 10 点左右,它停止工作了。我想说的是它非常不一致,有时有效有时无效。
如何重现: 运行 来自 google_trans_new 软件包网站的示例代码,具有指定的 python 版本。
这是我的代码:
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
已经有一个开放的git issue。解决方法是:
Change line 151 in google_trans_new/google_trans_new.py which is:
response = (decoded_line + ']')
toresponse = decoded_line
您只需克隆 google_trans_new 存储库并编辑 google_trans_new.py 上的第 151 行,如上所述。
使用编辑后的代码和您的输入完成测试 (สวัสดีจีน):