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:

Code: Alles auswählen

irgendwas['data'][0]['open']

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!