web-dev-qa-db-ja.com

Python 3 UnicodeDecodeError: 'ascii' codec ca n't decode byte 0xe2 at position 0:ordinal not in range(128)

私はこれを実装しています notebook WindowsでPython 3.5.3を使用し、load_vectors()呼び出しで次のエラーが発生しました。 。

<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

おそらくpickle.load(f, encoding='latin1')のエンコーディングを指定する必要がありますが、ファイル内のすべての文字がエンコーディングに従っていることを確認してください。

デフォルトでは、ピクルコードは「ASCII」でファイルをデコードしようとして失敗します。代わりに、どちらを使用するかを明示的に指定できます。 Documentation からこれを参照してください。

Latin1が解決しない場合は、encoding='bytes'その後、すべてのキーと値をデコードします。

3
Sreenadh T C

この問題を解決するには、csvファイル全体をコピーしてテキストに貼り付け、次のように読み取ります。

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

私も同じエラーを受け取りました。左右の二重引用符(中引用符)があるファイルからテキストをコピーして貼り付けることに気付きました。標準のダブルクォート( ")に変更すると、問題は修正されました!

引用符の違いについては、このリンクを参照してください: https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html

1
mwilmes