'utf-8' codec kann nicht decodieren byte Lesen einer Datei in Python ist3.4 aber nicht in Python2.7
War ich zu Lesen versucht, eine Datei in python2.7, und es war readen perfekt. Das problem, das ich habe ist, wenn ich führen das gleiche Programm in Python ist3.4 und dann erscheint die Fehlermeldung:
'utf-8' codec can't decode byte 0xf2 in position 424: invalid continuation byte'
Auch, wenn ich das Programm in Windows (mit Python ist3.4), wird der Fehler nicht angezeigt wird. Die erste Zeile des Dokuments:
Codi;Codi_lloc_anonim;Nom
ist und der code von meinem Programm ist:
def lectdict(filename,colkey,colvalue):
f = open(filename,'r')
D = dict()
for line in f:
if line == '\n': continue
D[line.split(';')[colkey]] = D.get(line.split(';')[colkey],[]) + [line.split(';')[colvalue]]
f.close
return D
Traduccio = lectdict('Noms_departaments_centres.txt',1,2)
- Was non-ASCII content und encoding hat deine text-Datei haben?
- es scheint, dass python setzt Voraus, dass die Datei in utf-8 aber es;s nicht wirklich wahr ist, können Sie versuchen open(Dateiname, 'r', encoding='latin-1') vielleicht?
Du musst angemeldet sein, um einen Kommentar abzugeben.
In Python2,
liest die Zeilen aus der Datei als bytes.
In Python ist3, den gleichen code liest die Zeilen aus der Datei als strings. Python ist3
strings sind was Python2 aufrufen
unicode
Objekte. Dies sind die bytes die dekodiertnach einigen Kodierung. Die Standard-Kodierung in Python ist3 ist
utf-8
.Die Fehlermeldung
zeigt Python ist3 versucht zu entschlüsseln die bytes als
utf-8
. Da ist ein Fehler aufgetreten, die Datei anscheinend nicht enthaltenutf-8
codierte bytes.Problem zu beheben, müssen Sie geben Sie die richtige Codierung der Datei:
Wenn Sie nicht wissen, die richtige Codierung, könnten Sie führen Sie dieses Programm einfach
versuchen Sie, alle Codierungen bekannt Python. Wenn Sie Glück haben wird es ein
Kodierung dreht die bytes in erkennbare Zeichen. Manchmal mehr
als eine Codierung kann erscheinen zu arbeiten, in welchem Fall Sie benötigen, um zu überprüfen und
vergleichen Sie die Ergebnisse sorgfältig.
Ok, ich hab das gleiche wie @unutbu mir sagen. Das Ergebnis war eine Menge von Kodierungen einer von diesen sind, cp1250, aus diesem Grund werde ich ändern :
zu
wie @triplee mir empfehlen. Und jetzt lese ich meine Dateien.