hallo liebes forum,
ich beschäftige mich gerade mit python. unter anderem muss ich auch Json Files
auslesen. was auch ganz gut funktioniert. doch mein vorhaben übersteigt mein wissen.
was ich benötige:
ich möchte gern das alter von hermann angezeigt bekommen,
kann mir jemand helfen
vielen dank
Json file:
----------------
{
"status": "ok",
"data": {
"jahr": 2022,
"land": "deutschland",
"kunden":
[
{
"name": "müller",
"alter": "44",
},
{
"name": "hermann",
"alter": "55",
},
{
"name": "maier",
"alter": "66",
}
]
}
}
Code:
----------------
das_file = json.loads(response.text)
for num in das_file['data']['kunden']:
print("ergebnis:", num['name'])
AUSGABE:
----------------
ergebnis: müller
ergebnis: hermann
ergebnis: maier
Json File mit Python auslesen
Variablennamen sind wichtig für das Verständnis. das_file ist ihr was wie Kundendaten. Und wie kommt man darauf Kunden num zu nennen?
Ein response-Objekt hat eine json-Methode.
Das was Du suchst ist die if-Abweisung, mit der Du den Kundennamen mit 'Hermann" vergleichen kannst.
Ein response-Objekt hat eine json-Methode.
Code: Alles auswählen
kundendaten = response.json()
for kunde in kundendaten['data']['kunden']:
print("ergebnis:", kunde['name'])
Grundsätzlich solltest du deinen Code immer in Code-Tags setzen damit die Einrückung erhalten bleibt.
Die Code-Tags werden automatisch eingefügt, wenn du den </> Button im vollständigen Editor drückst.
Du hast mit dem json-Modul erfolgreich in Python Datenstrukturen übertragen. Und du weißt offensichtlich, wie man die Namen aus dieser Struktur ausliest. Woran genau scheitert jetzt der Zugriff auf das Alter?
Der Umgang mit Datenstrukturen wie dicts ist in Python essentiell. Die offizielle Dokumentation enthält auch ein recht gutes Tutorial. Das ist ein guter Einstieg um Python zu lernen.
Die Code-Tags werden automatisch eingefügt, wenn du den </> Button im vollständigen Editor drückst.
Du hast mit dem json-Modul erfolgreich in Python Datenstrukturen übertragen. Und du weißt offensichtlich, wie man die Namen aus dieser Struktur ausliest. Woran genau scheitert jetzt der Zugriff auf das Alter?
Der Umgang mit Datenstrukturen wie dicts ist in Python essentiell. Die offizielle Dokumentation enthält auch ein recht gutes Tutorial. Das ist ein guter Einstieg um Python zu lernen.
hier die json-file in besserer form.
wie ich mich durch die einzelnen arrays und objekte hangle habe ich herausgefunden,
so erhalte ich alle namen der kunden in der json-file:
ich möchte jedoch gezielt nach einem kunden suchen (welcher mir bekannt ist) und das dazugehörige alter ausgeben
es soll also nur das alter von hermann ausgeben werden.
mit anderen worten: wie alt ist hermann?
das ich das irgedwie vergleichen muss, ist mir bewusst, aber ich weist nicht wie. deshalb hier die frage im forum.
gibt es einen pfiffigen, der mir das lösen kann?
vielen dank!
wie ich mich durch die einzelnen arrays und objekte hangle habe ich herausgefunden,
so erhalte ich alle namen der kunden in der json-file:
Code: Alles auswählen
daten = json.loads(response.text)
for kunde in daten ['data']['kunden']:
print("ergebnis:", kunde['name'])
ich möchte jedoch gezielt nach einem kunden suchen (welcher mir bekannt ist) und das dazugehörige alter ausgeben
es soll also nur das alter von hermann ausgeben werden.
mit anderen worten: wie alt ist hermann?
das ich das irgedwie vergleichen muss, ist mir bewusst, aber ich weist nicht wie. deshalb hier die frage im forum.
gibt es einen pfiffigen, der mir das lösen kann?
vielen dank!
Code: Alles auswählen
{
"status": "ok",
"data": {
"jahr": 2022,
"land": "deutschland",
"kunden":
[
{
"name": "müller",
"alter": "44",
},
{
"name": "hermann",
"alter": "55",
},
{
"name": "maier",
"alter": "66",
}
]
}
}
Wenn du schon durch alles Kunden läufst, fehlt doch nur noch der Vergleich des Namens mit dem gesuchten Namen, und wenn das passt, dann das Alter ausgeben. Und ganz grundsätzlich liefern wir hier keine fertigen Hausaufgaben ab.
Hallo,
du brauchst keine zwei Bücher. Wann willst du das Alter ausgeben? *Wenn* der Name gleich "Hermann" ist.
Übersetze die Antwort mal ins englische und schau nach, welche Zeichen man für eine "ist-gleich" Frage einsetzt.
Du verlierst mehr Zeit, in dem du auf eine fertige Lösung wartest.
Grüße
Dennis
du brauchst keine zwei Bücher. Wann willst du das Alter ausgeben? *Wenn* der Name gleich "Hermann" ist.
Übersetze die Antwort mal ins englische und schau nach, welche Zeichen man für eine "ist-gleich" Frage einsetzt.
Du verlierst mehr Zeit, in dem du auf eine fertige Lösung wartest.
Grüße
Dennis
"When I got the music, I got a place to go" [Rancid, 1993]
Code: Alles auswählen
daten = json.loads(response.text)
for kunde in daten ['data']['kunden']:
gesuchter_name = kunde['name']
if (gesuchter_name=="hermann"):
ich müsste ja jetzt weitersuchen, ohne wieder die komplette "daten" json zu durchlaufen
quasie nur nach dem nächstfolgenden objekt [alter]
Du benutzt immer noch loads statt response.json(). Warum?
Du mußt nichts mehr Suchen, denn das "nächstfolgende objekt" [alter] ist im selben Wörterbuch wie der Name, nämlich im Objekt `kunde`. Wenn Du weißt, wie Du an den Namen kommst, dann kennst Du auch das Alter.
Du mußt nichts mehr Suchen, denn das "nächstfolgende objekt" [alter] ist im selben Wörterbuch wie der Name, nämlich im Objekt `kunde`. Wenn Du weißt, wie Du an den Namen kommst, dann kennst Du auch das Alter.
- __blackjack__
- User
- Beiträge: 13533
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
Mal mit Kanonen auf Spatzen geschossen: Mit `glom` erst einmal geprüft ob das was wir da bekommen ein gewisses Format erfüllt, und dann die interessanten Daten extrahiert und passend für einen einfachen Wörterbuchzugriff umgebaut:
Ausgaben:
Code: Alles auswählen
#!/usr/bin/env python3
import requests
from glom import Iter, Match, Spec, glom, merge
def main():
# response = requests.get(
# "http://www.example.com/example.json", timeout=None
# )
# response.raise_for_status()
# data = response.json()
data = {
"status": "ok",
"data": {
"jahr": 2022,
"land": "deutschland",
"kunden": [
{"name": "müller", "alter": "44"},
{"name": "hermann", "alter": "55"},
{"name": "maier", "alter": "66"},
],
},
}
#
# Daten validieren.
#
data = Match(
{
"status": "ok",
"data": {
"jahr": int,
"land": str,
"kunden": [{"name": str, "alter": str}],
},
}
).verify(data)
#
# Interessanten Teil der Daten extrahieren/konvertieren/umstrukturieren.
#
name_to_age = glom(
data,
(
"data.kunden",
Iter({Spec("name"): ("alter", int)}),
merge,
),
)
print(name_to_age)
#
# Gewünschtes Datum ausgeben.
#
print(name_to_age["hermann"])
if __name__ == "__main__":
main()
Code: Alles auswählen
{'müller': 44, 'hermann': 55, 'maier': 66}
55
Code: Alles auswählen
- (void)countSheep {
unsigned int sheep = 0;
while ( ! [self isAsleep]) { ++sheep; }
}