image image


Worknote: Unicode und CSV in Python 2.x

image Das Verarbeiten von Dateien mit komma-separierten Daten (CSV = comma separated value), wie sie zum Beispiel viele Tabellenkalkulationen und Datenbanken herausschreiben (können), ist eine häufige Anwendung, speziell im wissenschaftlichen Bereich. In den Naturwissenschaften ist man meistens fein raus, die Dateien enthalten in der Regel nur Zahlen und da muß man sich nicht mit Umlauten oder Akzenten herumschlagen. Anders dagegen in den Geisteswissenschaften. Um CSV-Dateien im UTF-8-Encoding zu lesen und zu schreiben, geht man in Python 2.x am Besten so vor:

# -*- coding: utf-8 -*-
import csv
import sys
import codecs

stdout_encoding = sys.stdout.encoding or sys.getfilesystemencoding()

#Unicode-Reader
def unicode_csv_reader(utf8_data, dialect='excel-tab', **kwargs):
    csv_reader = csv.reader(utf8_data, dialect=dialect, **kwargs)
    for row in csv_reader:
        yield [unicode(cell, 'utf-8') for cell in row]

reader = unicode_csv_reader(open(filename, "rU"))

for row in reader:
	ausgabe = "" # Irgendetwas mit den Daten anstellen

f = codecs.open(filename, "w", "utf-8")
f.write(ausgabe)

Das hat bei mir zumindestens bisher immer funkioniert.