Python csv: UnicodeDecodeError
Ich lese in einer Datei mit Pythonscsv
-Modul, und habe noch eine weitere Kodierungsfrage (sorry, hier sind so viele).
In der CSV-Datei gibt es £ -Zeichen. Nachdem sie die Zeile eingelesen und ausgedruckt haben, sind sie zu \ xa3 geworden.
enn Sie versuchen, sie als Unicode zu kodieren, erhalten Sie einUnicodeDecodeError
:
row = [unicode(x.strip()) for x in row]
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa3 in position 0: ordinal not in range(128)
Ich habe das @ gelescsv documentation und die zahlreichen weiteren Fragen dazu auf StackOverflow. ICHdenke dass £ in ASCII zu \ xa3 wird, bedeutet, dass sich die ursprüngliche CSV-Datei in UTF-8 befindet.
(Gibt es übrigens eine schnelle Möglichkeit, die Codierung einer CSV-Datei zu überprüfen?)
Wenn es in UTF-8 ist, sollte das CSV-Modul dann nicht in der Lage sein, damit umzugehen? Es scheint, als würden alle Symbole in ASCII umgewandelt, obwohl die Dokumentation behauptet, UTF-8 zu akzeptieren.
Ich habe versucht, ein @ hinzuzufügunicode_csv_reader
Funktion wie im @ beschriebcsv Beispiele, aber es hilft nicht.
---- EDIT -----
Ich sollte eine Sache klarstellen. Ich habe gesehendiese Frag, das sieht sehr ähnlich aus. Aber das Hinzufügen derunicode_csv_reader
ie dort definierte @ -Funktion erzeugt stattdessen einen anderen Fehler:
yield [unicode(cell, 'utf-8') for cell in row]
UnicodeDecodeError: 'utf8' codec can't decode byte 0xa3 in position 8: unexpected code byte
Vielleicht ist meine Datei doch nicht UTF8? Wie kann ich sagen