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_readerie 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

Antworten auf die Frage(4)

Ihre Antwort auf die Frage