lehrkraefte:blc:informatik:glf4-20:umgang-mit-dateien:challenge3

JSON-Dateien

  • JSON-Dateien sind ebenfalls Text-Dateien, in denen ebenfalls strukturierte Information gespeichert werden kann, und zwar in der JavaScript Object Notation, kurz JSON.
  • JSON-Dateien können sehr einfach in Python importiert werden und dann verarbeitet werden.
  • JSON kennt u.a. folgenden Datentypen:
    • Zahlen
    • Strings (Zeichenketten, zwischen Anführungszeichen
    • Listen (zwischen [ und ]), die wieder JSON-Datentypen enthalten kann.
    • Dictionaries (zwischen { und }). Diese sind wie Listen, aber mit beliebigen Strings anstatt Zahlen als Indizies.

Testen und verstehen Sie (Zeile für Zeile!) folgendes Python-Programm:

primzahlen = [2,3,5,7,11,13,17,19,23]
for p in primzahlen:
  print("%d ist prim!" % p)
 
# Indizies starten bei 0!
print("Die zweite Primzahl ist %d" % primzahlen[1])
 
csv = ""   # Leere Zeichenkette
for p in primzahlen:
  csv += "%d;" % p
csv+="\n"   # Zeilenumbruch
print(csv)
  • Listen werden zwischen [ und ] durch Kommas getrennt geschrieben.
  • Zugriff auf einzelne Elemente erfolgt mit z.B. a[2] (drittes Element der Liste, die in der Variablen a gespeichert ist).
  • Mit Format-Strings können Dinge wie Zahlen formatiert ausgegeben werden. Das Format ist
print("bla %d bla" % 5)      # <- %d wird durch 5 ersetzt, man erhält "bla 5 bla"
print("x=%d, y=%d" % (23,42))  # <- das erste %d wird durch 23, das zweite durch 42 ersetzt, man erhält "x=23, y=42".
  • Listen können auch wieder Listen enthalten:
tabelle = [[1,2,3],[4,5,6]]
print(tabelle[0])  # erstes Element ist die Liste [1,2,3]
print(tabelle[0][1])  # zweites Element der Liste [1,2,3], also 2.
 
print("\nZeilenweise Ausgabe:")
for zeile in tabelle:
  print(zeile)

Vervollständigen Sie folgenden Python-Code, so dass er die Tabelle im CSV Format ausgibt:

tabelle = [[x*y for x in range(1,6)] for y in range(1,6)]
print("Ganze tabelle:")
print(tabelle)
 
csv = ""
 
#
#  Hier die Variable csv erweitern
# Inspirieren Sie sich dabei beim Beispiel mit den Primzahlen
#
 
# Ausgabe
print(csv)

Die Ausgabe soll wie folgt aussehen:

1;2;3;4;5;
2;4;6;8;10;
3;6;9;12;15;
4;8;12;16;20;
5;10;15;20;25;

JSON in, CSV out

  • Speichern Sie folgende Datei im Ordner challenges: data01.json
  • Folgender Code liest die JSON-Datei ein und man erhält einen liste in der Variablen data:
jsonreader.py
import json    # Für die Verarbeitung von JSON-Daten
 
# Datei öffnen
datei = open("data01.json")
# JSON-Daten parsen
data = json.load(datei)
# Datei schliessen
datei.close()
 
# Schlaufe über die Daten
for i in range(len(data)):
    print("data[%d] = %s" % (i,data[i]))
  • Erweitern Sie obiges Python-Programm so, dass eine Zeile im CSV-Format produziert wird.
  • Speichern Sie folgende Datei im Ordner challenges: data07.json
  • Schreiben Sie ein Python-Programm, das die Datei data07.json einliest und eine Zeile im CSV-Format produziert.
  • Speichern Sie das Resultat in der Datei data07.csv mit dem folgenden Code:
datei = open("data07.csv", "w")  # Datei zum Schreiben öffnen.
datei.write(csv)
datei.close()
  • Überprüfen Sie, ob sich die Datei mit Excel korrekt öffnen lässt.

Dictionaries (JSON Objects)

  • Listen (Array) werden mit Zahlen von 0 bis n-1 indiziert, wobei n die Anzahl Element sind.
  • Dictionaries werden durch Strings (Zeichenketten) indiziert und haben a priori keine fixe Ordnung.
  • Dictionaries werden zwischen { und } geschrieben, wobei die einzelnen Einträge aus einem String in Anführungszeichen (der Key), einem Doppelpunkt : und einem Wert (Value) bestehen. Die Werte können beliebige Python-Objekte sein, wie Zahlen, Strings, Listen oder auch wieder Dictionaries.
  • Studieren Sie folgenden Code:
d = {"4eNP": 23, "4iW" : 22, "4kW" : 20}
print(d["4iW"])   # Liefert 22
print(d.keys())   # Liefert ['4kW', '4iW', '4eNP']
print(d.values()) # Liefert [20, 22, 23]
print(d.items())  # Liefert [('4kW', 20), ('4iW', 22), ('4eNP', 23)]
# Loop über alle Elmente
for key,value in d.items():
  print("d['%s']=%d" % (key, value))
  • Schreiben Sie ein Python-Programm, das folgende JSON-Datei in eine CSV-Datei mit 2 Spalten umwandelt: data03.json

Verwenden Sie dazu obige Code-Blöcke, um die JSON-Datei einzulesen und am Schluss das CSV zu schreiben. Schauen Sie sich die JSON-Datei an und/oder geben Sie den Inhalt in Python aus (mit print(data) in obigen Code-Beispielen). Überlegen Sie sich, was die übergeordnete Struktur ist, und wie Sie mit einer for-Schlaufe über die Elemente Iterieren können.

  • Diejenigen, die Daten im JSON-Format haben (z.B. von Spotify), können versuchen, diese als CSV zu exportieren. Die anderen können diese Datei verwenden: data04.json.
  • lehrkraefte/blc/informatik/glf4-20/umgang-mit-dateien/challenge3.txt
  • Last modified: 2021/02/25 07:21
  • by Ivo Blöchliger