Datenformate
Die exportierten Daten erhalten Sie meist in einem der folgenden Formaten.
Alle diese Formate sind Text-Dateien, d.h. sie enthalten nur Buchstaben ohne jegliche stilistische Formatierung (wie Schriftart, Grösse, Farbe etc.).
Diese Dateien können alle mit einem Text-Editor (z.B. Notepad++) betrachtet und auch modifiziert werden.
Folgende Formate sind geläufig in diesen Datenexporten:
- JSON (sehr einfach maschinenlesbar, steht für «JavaScript Object Notation»)
- CSV («murksiges» Format, kann meist gut von eine Tabellenkalkulation eingelesen werden, steht für «Comma seperated values», wobei das Deutsche Excel natürlich Strichpunkte braucht und nicht mit Kommas umgehen kann )
- HTML (Webseiten, sieht gut im Browser aus, ist aber meist mühsam daraus Daten zur Weiterverarbeitung zu extrahieren).
JSON
JSON kann unter anderem folgende Dinge speichern:
- Zahlen
- Zeichenketten (Strings), immer zwischen Anführungszeichen
- Listen, immer zwischen eckigen Klammern, Einträge durch Kommas getrennt, z.B.
["hallo", 2, [1,2,3] ]
- Objects, eine Liste mit «Schlüssel:Wert»-Paaren, immer zwischen geschweiften Klammern, z.B.
{"name":"Wurst", "vorname":"Hans", "alter":24, "noten":{"info":[5.5, 6, 4], "mathe":[3, 4.6, 5] } }
Für die bessere Lesbarkeit dürfen Zeilenumbrüche oder Leerschläge eingefügt werden. Diese werden aber ignoriert und sind nicht nötig (mal abgesehen von der besseren Lesbarkeit für Menschen).
Einlesen von JSON in Python
JSON-Dateien können sehr einfach mit Python eingelesen und weiterbearbeitet werden:
import json with open("meindaten.json","r") as f: daten = json.load(f)
Zugriff
Auf Einträge eines Objects können wie folgt zugegriffen werden (Annahme: Die Variable daten
enthält das obige JSON-Object:
data = {"name":"Wurst", "vorname":"Hans", "alter":24, "noten":{"info":[5.5, 6, 4], "mathe":[3, 4.6, 5]} } print(data["vorname"]) # Gibt Hans aus print(data["noten"]["mathe"]) # Gibt [3, 4.6, 5] aus print(data["noten"]["info"][1]) # Gibt 6 aus (die zweite Note hat den Index 1, die erste hat den Index 0)
Interation
Alle Einträge einer Liste durchgehen:
liste = [42,"bla","blu"] for eintrag in liste: print(f"Hier ist ein Eintrag: {eintrag}")
Alle Schlüssel und Werte eines Objects (in Python Dictionary gennant) durchgehen:
objekt = {"name":"Wurst", "vorname":"Hans"} for schluessel in objekt: print(f"Zum Schlüssel {schluessel} gehört der Wert {object[schluessel]}")
CSV-Datein
Das CSV-Format ist nicht genau spezifiziert und unterschliedliche Versionen auch der selben Tabellenkalkulation lesen und schreiben diese Dateien unterschiedlich. Eine typische Datei sieht wie folgt aus:
"Vorname","Name","Alter" "Hans","Wurst",17 "Vreneli","von Guggisberg",18
Daten extrahieren
Für JSON-Dateien bietet sich Python an.
Für CSV-Dateien eine Tabellenkalkulation.
Es ist aber auch möglich, die Daten direkt in Notepad++ mit geschicktem Suchen/Ersetzen herauszubekommen. Auch könnte direkt auf der Kommandozeile mit den Kommandos grep
und cut
gearbeitet werden. Z.B. für den JSON-Export der YouTube history:
# Erst alle Zeilen mit dem String time ausgeben # Dann alles nach dem ersten Doppelpunkt ausgeben # Dann alles zwischen dem ersten und zweiten Anführungszeichen ausgeben grep time history/watch-history.json | cut -f2-9 -d: | cut -f2 -d\"
grep time
liefert z.B.:
"time": "2020-05-24T17:57:17.153Z", "time": "2020-05-24T17:53:07.393Z", "time": "2020-05-24T17:53:02.705Z",
Das erste cut -f2-9 -d:
macht daraus
"2020-05-24T17:57:17.153Z", "2020-05-24T17:53:07.393Z", "2020-05-24T17:53:02.705Z",
und das letzte cut -f2 -d\“
macht daraus
2020-05-24T17:57:17.153Z 2020-05-24T17:53:07.393Z 2020-05-24T17:53:02.705Z