JSONDecodeError с использованием Google Translate API с Python3

Я тщательно искал Stack Overflow, но не нашел ответа на эту проблему. Я пытаюсь использовать Google Translate API (googletrans 2.2.0) для Python (3.6.2) и пытаюсь перевести набор неанглийских документов на английский язык. Я разрешаю Google Translate определять язык. Вот мой код:

## newcorpus is a corpus I have created consisting of non-english documents
fileids = newcorpus.fileids
for f in fileids:
    p = newcorpus.raw(f) 
    p = str(p[:15000])
    translated_text = translator.translate(p)
    print(translated_text)
    sleep(10)

Я ограничиваю свой вызов API, каждый раз ожидая 10 секунд. Я также скармливаю API только 15k символов за раз, чтобы оставаться в пределах лимита символов.

Каждый раз, когда я запускаю этот код, я получаю следующее сообщение об ошибке:

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

Кто-нибудь может помочь?


person Roald Schuring    schedule 29.12.2017    source источник
comment
Здесь две ошибки: 1. Если p - это dict, str(p) выдаст недопустимую строку JSON. 2. если p является необработанной строкой JSON, p[:1500] разбивает строку JSON на части и делает ее недействительной строкой JSON.   -  person Arount    schedule 29.12.2017
comment
Спасибо, Arount. Как ни странно, я получаю ту же самую ошибку декодера JSON, когда удаляю строку p = str (p [: 15000]) ... любые другие идеи относительно того, что может происходить?   -  person Roald Schuring    schedule 29.12.2017


Ответы (2)


Думаю, я нашел ответ на свой вопрос. Если я уменьшу количество символов, которые я передаю в API за один раз, до 5k, все будет работать нормально. Странно, потому что в документации Googletrans написано, что лимит 15к ... Ну ладно. Мне нужно будет обработать запрос.

person Roald Schuring    schedule 29.12.2017

Вам нужно прекратить использовать googletrans, пока они не исправят это, и вместо этого использовать перевод:

https://pypi.org/project/translate/

person mounirboulwafa    schedule 26.02.2020