Python Lernhandbuch

Kapitel 11: CSV, JSON und Excel lesen und bearbeiten · Abschnitt 1 von 4

CSV mit dem Modul csv

Beispieldatei verkaeufe.csv (Trenner Semikolon, wie ihn deutsche Excel-Versionen erzeugen):

csv
kunde;artikel;menge;preis
Anna;Stift;10;1.50
Ben;Heft;5;3.00
Anna;Heft;2;3.00
Cem;Stift;20;1.40

Lesen mit DictReader (jede Zeile wird ein Dictionary, die Spaltenüberschriften sind die Schlüssel):

python
import csv

with open('verkaeufe.csv', newline='', encoding='utf-8-sig') as f:
    leser = csv.DictReader(f, delimiter=';')
    zeilen = list(leser)            # Liste von Dictionaries, alle Werte sind Strings

print(zeilen[0])    # {'kunde': 'Anna', 'artikel': 'Stift', 'menge': '10', 'preis': '1.50'}
summe = sum(int(z['menge']) * float(z['preis']) for z in zeilen)

Schreiben mit DictWriter:

python
import csv

felder = ['kunde', 'umsatz']
with open('umsatz.csv', 'w', newline='', encoding='utf-8-sig') as f:
    schreiber = csv.DictWriter(f, fieldnames=felder, delimiter=';')
    schreiber.writeheader()                      # Kopfzeile schreiben
    schreiber.writerow({'kunde': 'Anna', 'umsatz': 15.0})
    schreiber.writerows([{'kunde': 'Ben', 'umsatz': 15.0}])   # mehrere auf einmal
Funktion und Parameter Bedeutung
csv.DictReader(f, fieldnames=None, delimiter=',') Liest Zeilen als Dictionaries. Ohne fieldnames gilt die erste Zeile als Kopfzeile
csv.DictWriter(f, fieldnames, delimiter=',') Schreibt Dictionaries. fieldnames legt Spalten und Reihenfolge fest
csv.reader(f, delimiter=','), csv.writer(f) Einfachere Variante mit Listen statt Dictionaries
open(..., newline='') Pflicht bei CSV-Dateien, sonst gibt es unter Windows leere Zeilen
encoding='utf-8-sig' UTF-8 mit Markierung (BOM). Excel erkennt Umlaute dann richtig. Beim Lesen entfernt es die Markierung am Dateianfang
delimiter Trennzeichen: ',', ';' oder '\t'

Alle Werte aus CSV sind Strings. Du musst selbst mit int(...), float(...) oder datetime.strptime(...) umwandeln. Deutsche Zahlen mit Komma wandelst du mit float(text.replace(',', '.')) um.

Tipp: Bei Python-Beispielen kannst du auf ▶ Ausprobieren klicken, den Code verändern und direkt ausführen.

← Kapitelübersicht