ich möchte eine Datei parsen, die verschachtelte Dicts in folgender Form enthält:
Code: Alles auswählen
{"einDict":[
{
"wert1":"907",
"wert2":"2",
"einUnterDict":
{
"wert1":"122361732",
"wert2":"2020-09-01T11:01:55.382+02:00",
"wert3":"2020-09-01T11:01:55.000+02:00",
"einUnterUnterDict":
{
"wert1":"blub",
"wert2":"122361732",
"title":"Blah",
},
}
}]}
Was ich gerne tun würde ist die Dicts in die entsprechende Python-dict-Struktur zu überführen. Dabei gibt es einige Hürden zu nehmen:
- Die Anführungszeichen vor den Strings müssen entfernt werden
- Die Schachtelung wird durch geschweifte Klammern erzeugt. Dazwischen gibt es (unregelmäßig) eckige Klammern, die ignoriert werden können
- Die Stuktur hat potenziell beliebig viele Unterebenen
Code: Alles auswählen
import pyParsing as pp
string='"{einDict":[{"wert1":"907","wert2":"2","einUnterDict":{"wert1":"122361732","wert2":"2020-09-01T11:01:55.382+02:00","wert3":"2020-09-01T11:01:55.000+02:00","einUnterUnterDict":{"wert1":"blub","wert2":"122361732","title":"Blah",},}}]}'
meindict = pp.OneOrMore(pp.nestedExpr('{','}')).parseString(string)
meindict
([(['"einDict"', ':[', (['"wert1"', ':', '"907"', ',', '"wert2"', ':', '"2"', ',', '"einUnterDict"', ':', (['"wert1"', ':', '"122361732"', ',', '"wert2"', ':', '"2020-09-01T11:01:55.382+02:00"', ',', '"wert3"', ':', '"2020-09-01T11:01:55.000+02:00"', ',', '"einUnterUnterDict"', ':', (['"wert1"', ':', '"blub"', ',', '"wert2"', ':', '"122361732"', ',', '"title"', ':', '"Blah"', ','], {}), ','], {})], {}), ']'], {})], {})