wake-up-neo.net

UnicodeDecodeError: 'utf-8' Codec kann kein Byte decodieren

Hier ist mein Code, 

for line in open('u.item'):
#read each line

immer wenn ich diesen Code ausführe, wird folgender Fehler ausgegeben:

UnicodeDecodeError: 'utf-8' codec can't decode byte 0xe9 in position 2892: invalid continuation byte

Ich habe versucht, dieses Problem zu lösen und einen zusätzlichen Parameter in open () einzufügen. Der Code sieht so aus;

for line in open('u.item', encoding='utf-8'):
#read each line

Aber wieder gibt es den gleichen Fehler. was sollte ich dann tun! Bitte helfen.

113
SujitS

Wie von Mark Ransom vorgeschlagen, habe ich die richtige Kodierung für dieses Problem gefunden. Die Kodierung lautete "ISO-8859-1". Durch Ersetzen von open("u.item", encoding="utf-8") durch open('u.item', encoding = "ISO-8859-1") wird das Problem gelöst.

258
SujitS

Ihre Datei enthält keine utf-8-kodierten Daten, sondern eine andere Kodierung. Finden Sie heraus, was diese Kodierung ist, und verwenden Sie sie im Aufruf open.

Bei der Windows-1252-Kodierung wäre beispielsweise der 0xe9 das Zeichen é.

24
Mark Ransom

Auch für mich gearbeitet, ISO 8859-1 wird viel sparen, hahaha, vor allem, wenn man APIs zur Spracherkennung verwendet

Beispiel: 

file = open('../Resources/' + filename, 'r', encoding="ISO-8859-1");
24

Versuchen Sie dies mit Pandas zu lesen 

pd.read_csv('u.item', sep='|', names=m_cols , encoding='latin-1')
17
Shashank

Wenn Sie Python 2 verwenden, wird die Lösung die folgende Lösung sein:

import io
for line in io.open("u.item", encoding="ISO-8859-1"):
    # do something

Da der encoding-Parameter nicht mit open() funktioniert, wird der folgende Fehler angezeigt:

 TypeError: 'encoding' ist ein ungültiges Schlüsselwortargument für diese Funktion 
9
Jeril

Wenn jemand nach diesen sucht, ist dies ein Beispiel für das Konvertieren einer CSV-Datei in Python 3:

try:
    inputReader = csv.reader(open(argv[1], encoding='ISO-8859-1'), delimiter=',',quotechar='"')
except IOError:
    pass
2
user6832484

Sie können das Problem lösen mit:

for line in open(your_file_path, 'rb'):

'rb' liest eine Datei im Binärmodus. Lesen Sie mehr hier . Hoffe das wird helfen!

1
Ozcar Nguyen

Manchmal Wenn open(filepath), bei der filepath tatsächlich keine Datei ist, derselbe Fehler angezeigt wird, stellen Sie zunächst sicher, dass die zu öffnende Datei vorhanden ist:

import os
assert os.path.isfile(filepath)

hoffe das wird helfen.

0
xtluo