web-dev-qa-db-fra.com

Erreur d'API GoogleTrans - Valeur attendue: ligne 1, colonne 1 (caractère 0)

Je rencontre cette erreur lors de la traduction de milliers de données texte dans une itération:

Expecting value: line 1 column 1 (char 0)

Mon code pour traduire de grandes quantités de texte:

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)

Je reçois cette erreur après avoir traduit environ 2-3k lignes.

9
Kerem

J'ai en quelque sorte compris le problème. Je pense qu'il s'agit de la limite de demande des API Google.

J'ai résolu cela en initialisant l'API du traducteur à chaque itération:

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 peut bloquer votre adresse IP, utiliser un VPN et cela devrait fonctionner.

4
Marc Bataillou

Dans mon cas, l'erreur a été causée par trop de demandes en peu de temps et mon adresse IP a été temporairement bloquée. Je l'ai essayé à nouveau le lendemain et tout a bien fonctionné.

2
pe.kne

Dans mon cas, c'est causé par des emoji dans les chaînes. Je les ai supprimés et tout fonctionne bien.

1
Jeff

C'est ce que j'ai dû faire pour contourner leur restriction d'appels API ... J'utilise un VPN, en particulier Nord-Vpn, donc pour le faire comme je le faisais, vous devriez pouvoir vous connecter/déconnecter de/vers un VPN via le terminal...

    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

J'ai également rencontré ce problème. Dans mon cas, c'était dû à la traduction du texte (en anglais) en anglais.

Pour contourner ce problème, j'ai utilisé un autre paquet langdetect pour acheminer le texte non anglais à traduire à l'aide de google translate.

n extrait du code:

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
Maurya Allimuthu