Googletrans停止工作,字符和表情符号出现Json.decoder错误

时间:2019-02-25 18:51:32

标签: python json python-3.x translate

在我开始之前-

代码:

from googletrans import Translator
import random
translator = Translator()

languages = ['af', 'sq', 'am', 'ar', 'hy', 'az', 'eu', 'be', 'bn', 'bs', 'bg', 'ca', 'ceb', 'zh-CN', 'zh-TW', 'co',
             'hr', 'cs', 'da', 'nl', 'eo', 'et', 'fi', 'fr', 'fy', 'gl', 'ka', 'de', 'el', 'gu', 'ht', 'ha',
             'haw', 'hi', 'hmn', 'hu', 'is', 'ig', 'id', 'ga', 'it', 'ja', 'jw', 'kn', 'kk', 'km', 'ko', 'ku',
             'ky', 'lo', 'la', 'lv', 'lt', 'lb', 'mk', 'mg', 'ms', 'ml', 'mt', 'mi', 'mr', 'mn', 'my', 'ne', 'no', 'ny',
             'ps', 'fa', 'pl', 'pt', 'pa', 'ro', 'ru', 'sm', 'gd', 'sr', 'st', 'sn', 'sd', 'si', 'sk', 'sl', 'so', 'es',
             'su', 'sw', 'sv', 'tl', 'tg', 'ta', 'te', 'th', 'tr', 'uk', 'ur', 'uz', 'vi', 'cy', 'xh', 'yi', 'yo', 'zu']
text = '''
hello
'''

for i in random.sample(languages, 102)[:30]:
    text = translator.translate(text, dest=i).text

print(translator.translate(text, dest='en').text)

错误:

Traceback (most recent call last):
  File "C:/Users/tudor/PycharmProjects/Auto Translator/main.py", line 16, in <module>
    text = translator.translate(text, dest=i).text
  File "C:\Users\tudor\PycharmProjects\Auto translator\venv\lib\site-packages\googletrans\client.py", line 172, in translate
    data = self._translate(text, dest, src)
  File "C:\Users\tudor\PycharmProjects\Auto translator\venv\lib\site-packages\googletrans\client.py", line 81, in _translate
    data = utils.format_json(r.text)
  File "C:\Users\tudor\PycharmProjects\Auto translator\venv\lib\site-packages\googletrans\utils.py", line 62, in format_json
    converted = legacy_format_json(original)
  File "C:\Users\tudor\PycharmProjects\Auto translator\venv\lib\site-packages\googletrans\utils.py", line 54, in legacy_format_json
    converted = json.loads(text)
  File "C:\Users\tudor\AppData\Local\Programs\Python\Python37\lib\json\__init__.py", line 348, in loads
    return _default_decoder.decode(s)
  File "C:\Users\tudor\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Users\tudor\AppData\Local\Programs\Python\Python37\lib\json\decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

我想要实现的是提供一个输入的自动翻译器,然后将其随机翻译30次左右。

该代码可以正常工作,没有错误,并且可以正常工作,但是有时会崩溃。根据我的研究结果,如果您在需要翻译的文本中添加表情符号或翻译员生成的某些字符(复杂的东方字符),则会崩溃并提供错误,几乎是完全相同的(我将了解为什么我无法将其复制)到上面的那个。

在大多数情况下,当程序崩溃时,我可以再次正常运行它,并且在出现不一致的错误时可以正常运行,但是有时代码根本无法翻译任何内容,并且会立即崩溃并且我无法即使我运行像这样的简单代码,也要重新运行该程序:

from googletrans import Translator
translator = Translator()

print(translator.translate('buna', dest='en').text)

>>>should produce `hello`

它再现相同的错误。如果我在没有库的情况下运行该程序,则可以正常运行。如果删除整个文件夹(如果有帮助,我将使用pycharm,它将创建一个venv文件夹,其中包含用于项目的环境),然后再次运行该程序,它将正常运行,直到再次崩溃。

我要解决的问题:

  • 如何停止程序崩溃
  • 如何包含表情符号

感谢您的帮助。

0 个答案:

没有答案