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
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:
| JSON | Python |
|---|---|
Objekt {...} | dict |
Array [...] | list |
Text "..." | str |
| Zahl | int / float |
true / false | True / False |
null | None |
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.5Aus 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 dunkelUngü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,BerlinLesen
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 altAlle 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?
| Format | Gut für |
|---|---|
| JSON | verschachtelte Daten, Web-APIs, Konfigurationen |
| CSV | flache 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.loadsfür Text,json.dump/json.loadfür Dateien- JSON-Objekte werden zu
dict, Arrays zulist,nullzuNone csv.writer,csv.reader,csv.DictReaderfür Tabellen- CSV-Werte sind immer Text; Dateien mit
newline=""undencoding="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
Welche Funktion wandelt einen JSON-Text in Python-Daten um?
- json.loads() (richtig)
- json.dumps()
- json.parse()
- json.decode_file()
Welchen Datentyp haben alle Werte, die csv.reader liefert?
- str (Text) (richtig)
- int
- float
- Je nach Inhalt unterschiedlich
Was entspricht null aus JSON in Python?
- None (richtig)
- 0
- ""
- False
Weiter im Kurs
Zurück: Die Standardbibliothek im Überblick
Weiter: Datum und Zeit
Alle Kapitel: Python im Überblick