2017-09-05 8 views
4

WindowsのPython 3.5.3でnotebookを実装していて、load_vectors()コール。私は別のソリューションを投稿しようとしましたが、うまくいきませんPython 3 UnicodeDecodeError: 'ascii'コーデックは、位置0のバイト0xe2をデコードできません:序数が範囲内にありません(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) 

答えて

1

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

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

latin1が解決しない場合は、encoding='bytes'を試してから、後ですべてのキーと値をデコードしてください。

+0

csvを使用しているときにこの問題に直面しています。それを修正する方法を知っていましたか? –

+0

@radityagumay読み込み中にエンコードオプションを試すことができます。どのようにファイルを読み、ファイルには何が入っていますか? –

+0

ただcsvファイルを書き込もうとしています。ファイルは次のようになります。https://paste.ofcode.org/CZk4aHSjvTwFfMU28JeRXk –

5

この問題は、csvファイル全体をテキストにコピー&ペーストして解決しました。以下のようになります。これは私の問題を解決します。

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

 関連する問題