2017-09-05 4 views
4

J'implémente ce notebook sur Windows avec Python 3.5.3 et a obtenu l'erreur de suivi sur load_vectors() appel. J'ai essayé différentes solutions postées mais aucune n'a fonctionné.Python 3 UnicodeDecodeError: codec 'ascii' ne peut pas décoder octet 0xe2 en position 0: ordinal pas dans la plage (128)

<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) 

Répondre

1

Vous devriez probablement donner le codage pour pickle.load(f, encoding='latin1'), mais s'il vous plaît assurez-vous que tous les personnages de votre fichier suivront l'encodage. Par défaut, votre code de décapage tente de décoder le fichier avec 'ASCII' qui échoue. Au lieu de cela, vous pouvez explicitement dire lequel utiliser. Voir ceci de Documentation. Si latin1 ne résout pas, essayez avec encoding='bytes' puis décoder toutes les clés et les valeurs plus tard.

+0

Je suis confronté à ce problème lors de l'utilisation de csv. Savez-vous comment le réparer? –

+0

@radityagumay Vous pouvez essayer l'option d'encodage pendant la lecture. Comment lisez-vous le fichier et ce qu'il y a dans le fichier? –

+0

juste essayer d'écrire un fichier CSV. et le fichier ressemble à ceci https://paste.ofcode.org/CZk4aHSjvTwFfMU28JeRXk –

5

J'ai résolu ce problème en copiant et en collant tout le fichier CSV dans le texte et faites comme ci-dessous. Cela résout mon problème.

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