EMZETT.
Login

Kurz: Programme tauschen Daten über standardisierte Formate aus. Die zwei häufigsten sind JSON (strukturierte Daten, überall im Web) und CSV (Tabellen, wie sie Excel exportiert). Beide sind in der Standardbibliothek enthalten.

Teil des Kurses Python

Kapitel 33 von 44 im Kurs Python. Mit Fortschritt, Quiz und Zertifikat auf der Lernseite.

Programme tauschen Daten über standardisierte Formate aus. Die zwei häufigsten sind JSON (strukturierte Daten, überall im Web) und CSV (Tabellen, wie sie Excel exportiert). Beide sind in der Standardbibliothek enthalten.

JSON

JSON (JavaScript Object Notation) sieht fast aus wie Python-Dictionaries und Listen. Die Entsprechungen:

JSONPython
Objekt {...}dict
Array [...]list
Text "..."str
Zahlint / float
true / falseTrue / False
nullNone

Python nach JSON-Text

import json
 
daten = {"name": "Mia", "alter": 17, "hobbys": ["Lesen", "Rad"], "aktiv": True, "partner": None}
text = json.dumps(daten)
print(text)
print(json.dumps(daten, indent=2, ensure_ascii=False)[:60])

Ausgabe:

{"name": "Mia", "alter": 17, "hobbys": ["Lesen", "Rad"], "aktiv": true, "partner": null}
{
  "name": "Mia",
  "alter": 17,
  "hobbys": [
    "Lesen",

dumps liefert einen Text (dump string), ensure_ascii=False erlaubt Umlaute ohne Maskierung, indent formatiert lesbar.

JSON-Text nach Python

import json
 
text = '{"produkte": [{"name": "Stift", "preis": 1.5}, {"name": "Heft", "preis": 2.0}]}'
daten = json.loads(text)
print(type(daten))
print(daten["produkte"][1]["name"])
print(sum(p["preis"] for p in daten["produkte"]))

Ausgabe:

<class 'dict'>
Heft
3.5

Aus Dateien lesen und in Dateien schreiben

dump und load (ohne s) arbeiten direkt mit Dateien:

import json
 
einstellungen = {"theme": "dunkel", "schriftgroesse": 14}
with open("einstellungen.json", "w", encoding="utf-8") as f:
    json.dump(einstellungen, f, indent=2, ensure_ascii=False)
 
with open("einstellungen.json", encoding="utf-8") as f:
    geladen = json.load(f)
print(geladen == einstellungen, geladen["theme"])

Ausgabe:

True dunkel

Ungültiges JSON löst einen json.JSONDecodeError aus (eine Art ValueError).

CSV

CSV (comma-separated values) speichert eine Tabelle zeilenweise, die Spalten durch Trennzeichen getrennt (in Deutschland oft ;). Das Modul csv übernimmt die Sonderfälle wie Anführungszeichen.

Schreiben

import csv
 
zeilen = [["Name", "Alter", "Stadt"], ["Mia", 17, "Köln"], ["Tom", 19, "Berlin"]]
with open("leute.csv", "w", newline="", encoding="utf-8") as f:
    schreiber = csv.writer(f)
    schreiber.writerows(zeilen)
print(open("leute.csv", encoding="utf-8").read())

Ausgabe:

Name,Alter,Stadt
Mia,17,Köln
Tom,19,Berlin

Lesen

import csv
 
# Datei vorbereiten
with open("leute.csv", "w", newline="", encoding="utf-8") as f:
    f.write("Name,Alter,Stadt\nMia,17,Köln\nTom,19,Berlin\n")
 
# als Listen
with open("leute.csv", newline="", encoding="utf-8") as f:
    for zeile in csv.reader(f):
        print(zeile)
 
# als Dictionaries (Kopfzeile = Schlüssel)
with open("leute.csv", newline="", encoding="utf-8") as f:
    for person in csv.DictReader(f):
        print(person["Name"], "ist", person["Alter"], "Jahre alt")

Ausgabe:

['Name', 'Alter', 'Stadt']
['Mia', '17', 'Köln']
['Tom', '19', 'Berlin']
Mia ist 17 Jahre alt
Tom ist 19 Jahre alt

Alle Werte kommen als Text an; Zahlen wandelst du selbst mit int() oder float() um. Ein anderes Trennzeichen gibst du mit delimiter=";" an.

Wann welches Format?

FormatGut für
JSONverschachtelte Daten, Web-APIs, Konfigurationen
CSVflache Tabellen, Austausch mit Excel

Tipp

Für größere Tabellenauswertungen nimmt man in der Praxis die Bibliothek pandas (pip install pandas). Sie liest CSV mit einem Aufruf (pd.read_csv) und bietet mächtige Auswertungen.

Merke

  • json.dumps / json.loads für Text, json.dump / json.load für Dateien
  • JSON-Objekte werden zu dict, Arrays zu list, null zu None
  • csv.writer, csv.reader, csv.DictReader für Tabellen
  • CSV-Werte sind immer Text; Dateien mit newline="" und encoding="utf-8" öffnen
  • JSON für verschachtelte Daten, CSV für flache Tabellen

Übungsaufgabe

Speichere eine Liste von Dictionaries (zum Beispiel drei Bücher mit Titel und Jahr) als JSON-Datei, lies sie wieder ein und gib die Titel aus.

Quiz zur Selbstkontrolle

Weiter im Kurs

Zurück: Die Standardbibliothek im Überblick

Weiter: Datum und Zeit

Alle Kapitel: Python im Überblick