Wie gehe ich mit der UTF8-Codierung in Python beim Lesen von CSV-Dateien um?

Mary-Kate Olsen
Freigeben: 2024-11-02 14:10:30
Original
431 Leute haben es durchsucht

How to Handle UTF8 Encoding in Python When Reading CSV Files?

Lesen einer UTF8-CSV-Datei mit Python

CSV-Dateien, die häufig für den Datenaustausch verwendet werden, enthalten häufig Zeichen mit Akzent, die zur Wahrung ihrer Integrität eine UTF8-Codierung erfordern. Der Python-CSV-Reader unterstützt jedoch nur ASCII-Daten.

Problem

Beim Versuch, eine UTF8-CSV-Datei mit akzentuierten französischen oder spanischen Zeichen zu lesen, obwohl Code zur Verarbeitung der UTF8-Codierung verwendet wird, tritt die folgende Ausnahme auf wurde gefunden:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 68: ordinal not in range(128)
Nach dem Login kopieren

Lösung

Die Lösung liegt im Verständnis des Zwecks der Kodierungsmethode. Es wandelt Unicode-Strings in Byte-Strings um, nicht umgekehrt. Durch die korrekte Verwendung des Codecs-Moduls und insbesondere von codecs.open für die Verarbeitung von UTF8-Textdateien kann der Code vereinfacht werden:

<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]

filename = 'da.csv'
reader = unicode_csv_reader(open(filename))
for field1, field2, field3 in reader:
  print field1, field2, field3 </code>
Nach dem Login kopieren

Hinweis

Wenn die Eingabedaten nicht in UTF8 vorliegen, wie z ISO-8859-1, der Code erfordert eine Transkodierung:

<code class="python">line.decode('whateverweirdcodec').encode('utf-8')</code>
Nach dem Login kopieren

Dies ist jedoch oft unnötig, da CSV ISO-8859-*-codierte Byte-Strings direkt verarbeiten kann.

Das obige ist der detaillierte Inhalt vonWie gehe ich mit der UTF8-Codierung in Python beim Lesen von CSV-Dateien um?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!