====== 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