Hier ist mein Code,
for line in open('u.item'):
#read each line
Wenn ich diesen Code ausführe, wird folgende Fehlermeldung angezeigt:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte
Ich habe versucht, dieses Problem zu lösen, indem ich einen zusätzlichen Parameter in open() einfügte. Der Code sieht wie folgt aus
for line in open('u.item', encoding='utf-8'):
#read each line
Aber wieder gibt es den gleichen Fehler. Was soll ich dann tun? Bitte helfen Sie mir.
Wie von Mark Ransom vorgeschlagen, habe ich die richtige Kodierung für dieses Problem gefunden. Die Kodierung war "ISO-8859-1", so dass das Ersetzen von open("u.item", encoding="utf-8")
durch open('u.item', encoding = "ISO-8859-1")
das Problem lösen wird.
Ihre Datei enthält nicht wirklich utf-8 kodierte Daten, sondern eine andere Kodierung. Finden Sie heraus, welche Kodierung das ist, und verwenden Sie sie im open
-Aufruf.
In der Windows-1252-Kodierung wäre 0xe9
zum Beispiel das Zeichen é
.
Falls jemand danach sucht, hier ein Beispiel für die Konvertierung einer CSV-Datei in Python 3:
try:
inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
pass