web-dev-qa-db-fra.com

Python 3 UnicodeDecodeError: le codec 'ascii' ne peut pas décoder l'octet 0xe2 en position 0: l'ordinal n'est pas dans la plage (128)

J'implémente cette notebook sur Windows avec Python 3.5.3 et j'ai obtenu l'erreur de suivi lors de l'appel de load_vectors (). J'ai essayé différentes solutions publiées mais aucune n'a fonctionné .

<ipython-input-86-dd4c123b0494> in load_vectors(loc)
      1 def load_vectors(loc):
      2     return (load_array(loc+'.dat'),
----> 3         pickle.load(open(loc+'_words.pkl','rb')),
      4         pickle.load(open(loc+'_idx.pkl','rb')))

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 0: ordinal not in range(128)
7
user1569341

Vous devriez probablement donner de l'encodage pour pickle.load(f, encoding='latin1'), mais veuillez vous assurer que tous les caractères de votre fichier suivront l'encodage.

Par défaut, votre code de pickle essaie de décoder le fichier avec 'ASCII' qui échoue. Au lieu de cela, vous pouvez dire explicitement lequel utiliser. Voir ceci depuis Documentation .

Si latin1 ne résout pas, essayez avec encoding='bytes', puis décode toutes les clés et valeurs ultérieurement.

3
Sreenadh T C

J'ai résolu ce problème en copiant et collant l'intégralité du fichier csv dans du texte et en le lisant avec:

with open(self.path + "/review_collection.txt", "r", encoding="utf-8") as f:
    read = f.read().splitlines()
    for row in read:
        print(row)
11
raditya gumay

J'ai aussi la même erreur. J'ai réalisé que je copiais et collais du texte à partir d'un fichier qui avait des guillemets gauche et droit (guillemets bouclés). Une fois que je l'ai changé en guillemets droits standard ("), le problème a été résolu!

Voir ce lien pour la différence entre les citations: https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html

1
mwilmes