lehrkraefte:blc:informatik:glf4-24:data-types-of-text-data

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 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).

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]}")

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
  • lehrkraefte/blc/informatik/glf4-24/data-types-of-text-data.txt
  • Last modified: 2024/03/20 19:16
  • by Ivo Blöchliger