JSON teil von string auslesen?

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Pingu
User
Beiträge: 1
Registriert: Samstag 27. Juli 2024, 14:06

Hallo zusammen

Ich muss aus einem string den JSON teil einzeln extracten und das attribut, das hinten dran ist extracten.
Anschliessend muss ich mit diesem attribut die korrekte liste im JSON string ausgeben.
Irgendwie schaffe ich es nicht.

also der string sieht etwa so aus:
'{"tarahumar": 2003, "fustier": ["grugrus", "swadeshi", "trillionize", "unpoeticized", "pseudoperipteral", "drakefly", "towaway"], "obtainers": "henchman", "stranglingly": "podded", "quatorzain": 2828.6, "funnel": "coscoroba", "motherly": 1070, "equitation": 4590, "nongraphitic": ["overhumane", "natica", "raspberries", "digestedly", "choraleon", "hypoleucocytosis"], "puckerier": "illegitimated"} equitation'

Mit dem letzten wort (equitation) muss ich dann die korrekte liste mit print() ausgeben.


Könntet ihr mir da echt auf die Sprünge helfen :?:
einfachTobi
User
Beiträge: 512
Registriert: Mittwoch 13. November 2019, 08:38

Ist das immer in dieser Form strukturiert? Falls ja, quick and dirty:

Code: Alles auswählen

import json

text = '{"tarahumar": 2003, "fustier": ["grugrus", "swadeshi", "trillionize", "unpoeticized", "pseudoperipteral", "drakefly", "towaway"], "obtainers": "henchman", "stranglingly": "podded", "quatorzain": 2828.6, "funnel": "coscoroba", "motherly": 1070, "equitation": 4590, "nongraphitic": ["overhumane", "natica", "raspberries", "digestedly", "choraleon", "hypoleucocytosis"], "puckerier": "illegitimated"} equitation'

separation_index = text[::-1].find(" ")
key = text [-separation_index:]
text_json = json.loads(text[:-separation_index])

print("Key to look up: ", key)
print("Loaded JSON: ", text_json)
print("Value: ", text_json[key])
Das ist allerdings halbwegs unelegent und nicht sehr robust. Wenn du allerdings sicherstellen kannst, dass die Struktur immer gleich ist, weil z. B. computergeneriert, wäre das ein gangbarer Weg. Daher wäre es interessant, wie der String denn genau aussieht und nicht nur in etwa.
Sirius3
User
Beiträge: 18253
Registriert: Sonntag 21. Oktober 2012, 17:20

@einfachTobi: es gibt auch rfind.
Hier würde man aber einfach rsplit oder rpartition benutzen.

Code: Alles auswählen

json_text, _, key = text.rpartition(" ")
@Pingu: woher kommt diese Zeile? Wer produziert die und kann man nicht die Produzentenseite dazu bringen, ein sinnvolles Format zu verwenden?
Benutzeravatar
__blackjack__
User
Beiträge: 14002
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Solange da noch Fragen sind, würde ich sagen die robusteste Variante ist erst mal:

Code: Alles auswählen

data = json.loads(text.removesuffix(" equitation"))
“The best book on programming for the layman is »Alice in Wonderland«; but that's because it's the best book on anything for the layman.” — Alan J. Perlis
Antworten