2017-05-30 7 views
0

にマップ私はこれで助けを必要としてください:UnicodeDecodeError: 'charmapの' コーデックが位置1010494でバイト0x9dをデコードすることはできません。文字は<undefined>

url ='https://www.sec.gov/Archives/edgar/data/1437750/0001477932-13-004416.txt' 
with open('file', 'wb') as f: 
    f.write(requests.get('%s' % url).content) 
with open('file', 'r') as t: 
      words= t.read() 

上記は私に次のエラーを与える:

return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x9d in position 1010494: character maps to < undefined> 

ありがとうございました!

答えて

-1

ファイルをバイナリとして書き、ユニコード文字列として読み取っているのはなぜですか? Pythonは、使用するコーデックを指定するまで、元のストリームからいくつかのバイトをデコードする方法を知らない。あなたが最初のコマンドでストリーミングしたファイルがUTF-8エンコードされていないので、それを読むときlatin-1にファイルをデコードしてみてください:勤務

with open('file', 'r', encoding='latin-1') as t: 
    words = t.read() 
+0

。どうもありがとう。 – user5282933

+0

どのようなASCIIのようなキャラクタセットで意味のある0x9dですか?これは有効なWindows-1252ではありません。 Pythonの "latin-1"コーデックは、これを "Operating System Command"というUnicode 0x9Dに変換します。[1]それはほとんど意味がありません。 "latin-1"コーデックでこのようなテキストを変換してもPythonプログラムはクラッシュしませんが、Unicodeで取得するものは[009d]のボックスです。 "latin-1"を使って問題を解決してください。 英語のテキストに表示されるときは、何らかの引用符のようです。しかし、Windows-1252の特別な引用符の1つではありません。 [1] http://www.fileformat.info/info/unicode/char/009d/index.htm –

+1

* UTF-8でエンコードされていないだけでなく、ページにバイナリデータが埋め込まれているようです。バイナリデータをテキストとして読み込もうとしないでください! 'latin-1'エンコーディングを使うことは、他の人の混乱をきれいにするために特別に使用しない限り、避けなければならないハックです。 –

関連する問題