2017-05-30 4 views
0

bitte ich brauche dabei helfen:UnicodeDecodeError: 'charmap' Codec kann nicht Byte 0x9D in Position 1.010.494 dekodieren: Zeichen zuordnet <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() 

Die oben gibt mir die folgende Fehlermeldung:

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> 

Vielen Dank!

Antwort

-1

Warum schreiben Sie Ihre Datei als Binärdatei und lesen sie dann als Unicode-String? Python kann einige Bytes aus dem ursprünglichen Stream nicht dekodieren, bis Sie ihm sagen, welcher Codec verwendet werden soll. Da die Datei, die Sie in Ihrem ersten Befehl gestreamt haben nicht utf-8-kodiert ist, versuchen Sie Ihre Datei latin-1 Decodierung beim Lesen:

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

Arbeitete. Danke vielmals. – user5282933

+0

In welchem ​​ASCII-ähnlichen Zeichensatz ist 0x9d sinnvoll? Es ist nicht gültig Windows-1252. Der Python-Code "latin-1" übersetzt ihn in Unicode 0x9D, was "Betriebssystem-Befehl" bedeutet. [1] Das macht wenig Sinn. Wenn Sie solchen Text mit dem Code "latin-1" konvertieren, stürzt das Python-Programm nicht ab, aber in Unicode erhalten Sie eine Box mit [009d]. Konvertieren mit "latin-1" nur Papiere über das Problem. Es scheint eine Art von Anführungszeichen zu sein, wenn es im englischen Text erscheint. Aber es ist nicht eines der speziellen Anführungszeichen von Windows-1252. [1] http://www.fileformat.info/info/unicode/char/009d/index.htm –

+1

Nicht nur ist es * nicht * UTF-8 kodiert, es scheint, dass Binärdaten in die Seite eingebettet sind. Sie sollten nicht versuchen, Binärdaten als Text zu lesen! Die Kodierung "latin-1" ist ein Hack, der vermieden werden sollte, es sei denn, Sie verwenden ihn speziell, um die Unordnung eines anderen zu beseitigen, und Sie wissen wirklich, was Sie tun. –

Verwandte Themen