Seite 1 von 1
Listeneintrag zerlegen und geordent ausgeben
Verfasst: Mittwoch 24. Februar 2021, 09:19
von Nobody0815
Hallo,
ich habe ein Problem mit einem Listeneintrag aus einem API-Request. Die "Liste" besteht nur aus einem (Multi-)Eintrag und sieht wiefolgt aus:
'data': [{'open': 237.42, 'high': 237.92, 'low': 232.4, 'close': 234.51, 'volume': 33970433.0, 'adj_high': 237.93, 'adj_low': 232.4, 'adj_close': 234.51, 'adj_open': 237.42, 'adj_volume': 36182764.0, 'symbol': 'MSFT', 'exchange': 'XNAS', 'date': '2021-02-22T00:00:00+0000'}]
Der gesamte Inhalt zwischen den eckicken Klammern --> {...} ist der erste (und einzige) Listeneintrag --> data[0]
Ich möchte aber auf die Inhalte (Bezeichner + Wert) zugreifen können --> open: 237.42, high: 237.92, usw.
Dazu muss der Listeneintrag zerlegt werden und die Inhalte einzeln ansprechbar sein. Nur wie ...
Re: Listeneintrag zerlegen und geordent ausgeben
Verfasst: Mittwoch 24. Februar 2021, 12:08
von Sirius3
Du hast Dir doch schon selbst die Lösung gegeben:
Re: Listeneintrag zerlegen und geordent ausgeben
Verfasst: Mittwoch 24. Februar 2021, 16:14
von Nobody0815
Du hast Dir doch schon selbst die Lösung gegeben:
Code: Alles auswählen
irgendwas['data'][0]['open']
Wenn ich das versuche, bekomme ich folgenden Fehler: "TypeError: string indices must be integers"
Re: Listeneintrag zerlegen und geordent ausgeben
Verfasst: Mittwoch 24. Februar 2021, 16:29
von Sirius3
Dann zeig Deinen wirklichen Code, der den Fehler produziert. So kann man nur sagen, dass der Type von irgendwas nicht mit dem übereinstimmt, was Du gezeigt hast.
Re: Listeneintrag zerlegen und geordent ausgeben
Verfasst: Mittwoch 24. Februar 2021, 18:22
von Nobody0815
Hallo Sirius3,
danke für die Hilfe! Der Fehler saß vor dem Bildschirm.
Ich habe meinen Code jetzt berichtigt und bekomme auch die gewünschte Ausgabe.
Falls es interessiert, hänge ich meinen Code noch unten dran. Anmerkungen dazu sind gerne gesehen.
VG Nobody0815
Code: Alles auswählen
import requests
import datetime
api_key = "ab853fc5f1d44dce79078df3531da2b0"
#Aktiencode
aktie_key = "MSFT"
#Marktidentifikationscode
exchange_key = "XNAS"
from datetime import date
date_from = date(2021, 2, 22)
date_to = date(2021, 2, 22)
# creating a http request
url = f'http://api.marketstack.com/v1/eod?access_key={api_key}&symbols={aktie_key}&exchange={exchange_key}&date_from={date_from}&date_to={date_to}'
daten = requests.get(url).json()
open = daten['data'][0]['open']
print(open)
Re: Listeneintrag zerlegen und geordent ausgeben
Verfasst: Mittwoch 24. Februar 2021, 20:28
von Sirius3
Importe stehen ganz oben in der Datei. Konstanten schreibt man komplett GROSS, und ein API_KEY sollte nicht veröffentlicht werden.
URL-Parameter formatiert man nicht in die URL hinein, sondern benutzt das params-Argument.
Code: Alles auswählen
import requests
from datetime import date
API_KEY = "ab853fc5f1d44dce79078df3531da2b0"
MARKETSTACK_URL = "http://api.marketstack.com/v1/eod"
def main():
#Aktiencode
aktie_key = "MSFT"
#Marktidentifikationscode
exchange_key = "XNAS"
date_from = date(2021, 2, 22)
date_to = date(2021, 2, 22)
daten = requests.get(url, params=dict(
access_key=api_key,
symbols=aktie_key,
exchange=exchange_key,
date_from=date_from,
date_to=date_to,
)).json()
open = daten['data'][0]['open']
print(open)
if __name__ == "__main__":
main()
Re: Listeneintrag zerlegen und geordent ausgeben
Verfasst: Donnerstag 25. Februar 2021, 08:55
von Nobody0815
Sirius3 hat geschrieben: ↑Mittwoch 24. Februar 2021, 20:28
Importe stehen ganz oben in der Datei. Konstanten schreibt man komplett GROSS, und ein API_KEY sollte nicht veröffentlicht werden.
URL-Parameter formatiert man nicht in die URL hinein, sondern benutzt das params-Argument.
- Importe stehen ganz oben in der Datei. --> verstanden
- Konstanten schreibt man komplett GROSS, --> VERSTANDEN
- ein API_KEY sollte nicht veröffentlicht werden --> ist mir bewusst, der API-Key ist nur zum Testen
- URL-Parameter formatiert man nicht in die URL hinein, sondern benutzt das params-Argument. --> wieder was dazugelernt
Danke für die Mühe!