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 ...
Listeneintrag zerlegen und geordent ausgeben
Du hast Dir doch schon selbst die Lösung gegeben:
Code: Alles auswählen
irgendwas['data'][0]['open']
-
- User
- Beiträge: 16
- Registriert: Dienstag 23. Februar 2021, 21:25
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"
-
- User
- Beiträge: 16
- Registriert: Dienstag 23. Februar 2021, 21:25
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
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)
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.
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()
-
- User
- Beiträge: 16
- Registriert: Dienstag 23. Februar 2021, 21:25
- 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