Ich muss den Inhalt einer CSV-Datei mit Python lesen. Jedoch, wenn ich diesen Code ausführen:Wie behebt man ein Problem mit der Kodierung?
with(open(self.path, 'r')) as csv_file:
csv_reader = csv.reader(csv_file, dialect=csv.excel, delimiter=';')
self.data = [[cell for cell in row] for row in csv_reader]
ich diesen Fehler:
File "C:\Python36\lib\encodings\cp1252.py", line 23, in decode return codecs.charmap_decode(input,self.errors,decoding_table)[0]
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 1137: character maps to <undefined>
Mein Verständnis ist, dass diese Datei nicht in cp-1252 codiert wurde, und dass ich herausfinden müssen, was Codierung war benutzt. Ich habe einiges ausprobiert, aber im Moment hat nichts funktioniert.
über die Datei:
- Es wird von einem externen Unternehmen gesendet wird, kann ich nicht mehr Informationen über sie hat.
- Es kommt mit anderen ähnlichen Dateien, mit denen ich habe kein Problem, wenn ich den gleichen Code ausführen
- Es hat eine Erweiterung .xls, ist aber eine CSV-Datei mit Semikolons getrennt
- Wenn ich öffne Mit Excel wird es im Kompatibilitätsmodus geöffnet. Aber ich sehe kein Codierproblem: alles zeigt richtig an.
Was ich schon versucht:
- es unter einem anderen Dateiformat Speicher des Kompatibilitätsmodus loszuwerden
eine Codierung in der ersten Zeile von meinem Code hinzufügen: (I versucht, einige mehr oder Codierungen, die ich kenne zufällig weniger)
mit (open (self.path, 'r', encoding = 'utf8')) als csv_file:
Kopieren Sie den Inhalt der Datei in eine neue Datei oder löschen Sie den gesamten Inhalt der Datei. Funktioniert immer noch nicht. Dieser nervt mich wirklich, weil ich denke, dass es bedeutet, dass das Problem nicht im Inhalt der Datei und nicht in der Datei selbst liegt.
- Suchen Sie überall viel wie Sie diese Art von Problem zu lösen.
Sie könnten versuchen, die Datei mit 'Pandas' oder' openpyxl' zu lesen. –
Python 2 oder Python 3? (Kann relevant sein). – nigel222
Wenn es direkt in Excel geöffnet wird, versuchen Sie, von Excel in eine andere CSV-Datei zu speichern. Dies könnte die Codierungsprobleme lösen, ohne dass Sie genau herausfinden müssen, was falsch war. Oder es könnte nicht ... – nigel222