2016-12-14 6 views
-1

ich Python bin neu und nahmen das Buch „Python for Data Analysis“ bis pydata-BuchProbleme mit Python json Dekodierung

Auf jeden Fall habe ich versucht, den ersten Code im Buch auf Seite 18 und ich erhalte Error. Versucht, die gesamte Datei erneut herunterzuladen, aber immer noch den gleichen Fehler.

Dies ist die Fehlermeldung

UnicodeDecodeError Traceback (most recent call last) 
in() 
----> 1 records=[json.loads(line) for line in open(path)] 

in (.0) 
----> 1 records=[json.loads(line) for line in open(path)] 

/Users/gambit_remy08/anaconda/lib/python3.5/encodings/ascii.py in decode(self, input, final) 
24 class IncrementalDecoder(codecs.IncrementalDecoder): 
25 def decode(self, input, final=False): 
---> 26 return codecs.ascii_decode(input, self.errors)[0] 
27 
28 class StreamWriter(Codec,codecs.StreamWriter): 

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe2 in position 6987: ordinal not in range(128) 

hier die Verbindung zu Github auf dem oben Gewinde https://github.com/wesm/pydata-book/issues/48#issuecomment-266333303

+2

Welche Python-Version verwenden Sie? Sieht aus wie Unicode-Problem. Bitte, posten Sie Ihre JSON-Daten. – Nevertheless

+0

Die letzte Zeile in dieser Datei ist eine leere Zeile. Löschen Sie die letzte Zeile und Ihr Code wird perfekt funktionieren. – MYGz

+0

'records = [json.loads (line) für die Zeile in open (Pfad, encoding = 'utf8')]' –

Antwort

0

Die UnicodeDecodeError normalerweise geschieht, wenn ein String str aus einer bestimmten Codierung decodiert. Da Kodierungen nur eine begrenzte Anzahl von Str-Strings auf Unicode-Zeichen abbilden, wird eine illegale Folge von Str-Zeichen bewirken, dass das codierungsspezifische Decodieren() fehlschlägt.

Siehe here

Um dies zu lösen, die Sie your_string.decode('utf8', 'ignore')

records=[json.loads(line.decode('utf8', 'ignore')) for line in open(path)] 
0

Ich habe eine Lösung für sie finden können. Im Grunde brauchen Sie nur dies zu verwenden und funktioniert so gut

records = [json.loads(line) for line in open(path, encoding='utf8')]