Heim >Backend-Entwicklung >Python-Tutorial >Wie lese ich UTF8-CSV-Dateien mit Akzentzeichen in Python?
Das Lesen von CSV-Dateien mit Akzentzeichen kann in Python aufgrund der eingeschränkten ASCII-Unterstützung eine Herausforderung sein. In diesem Artikel wird eine Lösung für dieses Problem untersucht, indem der „UnicodeDecodeError“ behoben wird, der beim Versuch, solche Dateien zu lesen, auftritt.
Um mit Akzentzeichen umzugehen, benötigen wir einen CSV-Reader unterstützt die Unicode-Kodierung. Der folgende Code ändert den Standard-CSV-Reader:
<code class="python">def unicode_csv_reader(unicode_csv_data, dialect=csv.excel, **kwargs): # Decode UTF-8 data into Unicode strings csv_reader = csv.reader(unicode_csv_data, dialect=dialect, **kwargs) for row in csv_reader: yield [unicode(cell, 'utf-8') for cell in row]</code>
Die ursprüngliche Lösung hat die Codierung fälschlicherweise auf einen Byte-String anstelle eines Unicode-Strings angewendet. Der folgende Code korrigiert diesen Fehler:
<code class="python">import csv def unicode_csv_reader(utf8_data, dialect=csv.excel, **kwargs): csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs) for row in csv_reader: yield [unicode(cell, 'utf-8') for cell in row]</code>
Jetzt können wir UTF8-codierte CSV-Dateien sicher wie folgt lesen:
<code class="python">filename = 'output.csv' reader = unicode_csv_reader(open(filename)) # Iterate through the rows, fields for field1, field2, field3 in reader: print field1, field2, field3 </code>
Bedenken Sie, dass die bereitgestellte Lösung davon ausgeht, dass die Eingabedaten bereits in UTF8-Kodierung vorliegen. Wenn dies nicht der Fall ist, können Sie es mit der Decodierungsmethode in UTF8 konvertieren, bevor Sie es an den CSV-Reader übergeben.
Das obige ist der detaillierte Inhalt vonWie lese ich UTF8-CSV-Dateien mit Akzentzeichen in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!