web-dev-qa-db-ja.com

GoogleTrans APIエラー-値が必要です:行1列1(char 0)

繰り返しで数千のテキストデータを翻訳するときにこのエラーが発生します。

Expecting value: line 1 column 1 (char 0)

大量のテキストを翻訳するための私のコード:

translatedList = []
for index, row in df.iterrows():
    newrow = copy.deepcopy(row)
    try:
        # translate the 'text' column
        translated = translator.translate(row['text'], dest='en')
        newrow['translated'] = translated.text
    except Exception as e:
        print(str(e))
        continue
    translatedList.append(newrow)

約2〜3k行を翻訳した後にこのエラーを受け取ります。

9
Kerem

ちょっと問題を見つけました。これはGoogle APIのリクエスト制限に関するものだと思います。

反復ごとにトランスレーターAPIを再初期化することでこれを解決しました。

import copy
from googletrans import Translator

translatedList = []
for index, row in df.iterrows():
    # REINITIALIZE THE API
    translator = Translator()
    newrow = copy.deepcopy(row)
    try:
        # translate the 'text' column
        translated = translator.translate(row['text'], dest='en')
        newrow['translated'] = translated.text
    except Exception as e:
        print(str(e))
        continue
    translatedList.append(newrow)
17
Kerem

GoogleがあなたのIPをブロックしている可能性があり、VPNを使用していて、動作するはずです。

4
Marc Bataillou

私の場合、エラーは短期間での要求が多すぎるために発生し、IPアドレスは一時的にブロックされました。翌日また試してみたが、すべてうまくいった。

2
pe.kne

私の場合、それは文字列の絵文字が原因です。私はそれらを削除し、すべてがうまく機能します。

1
Jeff

これは、APIコール制限をバイパスするために私がしなければならなかったことです...私はVPN、特にNord-Vpnを使用しています。ターミナル...

    def translate_text(text, dest_language="en"):
        # Used to translate using the googletrans library
        import json
        translator = googletrans.Translator()
        try:
            translation = translator.translate(text=text, dest=dest_language)
        except json.decoder.JSONDecodeError:
            # api call restriction
            process = subprocess.Popen(["nordvpn", "d"], stdout=subprocess.PIPE)
            process.wait()
            process = subprocess.Popen(["nordvpn", "c", "canada"], stdout=subprocess.PIPE)
            process.wait()
            return Process_Data.translate_text(text=text, dest_language=dest_language)
        return translation
1
Austin Marino

私もこの問題に直面しています。私の場合、それはテキスト(英語)を英語に翻訳するためでした。

回避策として、別のパッケージlangdetectを使用して、Google翻訳を使用して英語以外のテキストを翻訳します。

コードからの抜粋:

from langdetect import detect
lang = detect(title)
if lang == 'en':
    temp_dict['title'] = title
else:
    temp_dict['title'] = translator.translate(title, dest='en').text
0