2016-05-14 17 views
1

Ich habe den folgenden Code:Parse-Code innerhalb json (Python)

from googlefinance import getQuotes 
import simplejson as json 

print (json.dumps(getQuotes('FRA:BMW'), indent=2)) 
b=(json.dumps(getQuotes('FRA:BMW'), indent=2)) 
print(type(b)) 
a = json.loads((json.dumps(getQuotes('FRA:BMW'), indent=2))) 
print(type(a)) 

Dies ist, was ich bekommen:

[ 
    { 
    "LastTradePrice": "73.39", 
    "LastTradeWithCurrency": "€73.39", 
    "LastTradeDateTime": "2016-05-13T19:57:30Z", 
    "LastTradeDateTimeLong": "May 13, 7:57PM GMT+2", 
    "ID": "10224532", 
    "Index": "FRA", 
    "StockSymbol": "BMW", 
    "LastTradeTime": "7:57PM GMT+2" 
    } 
] 
<class 'str'> 
<class 'list'> 
[{'LastTradePrice': '73.39', 'LastTradeWithCurrency': '&#8364;73.39', 'LastTradeDateTimeLong': 'May 13, 7:57PM GMT+2', 'LastTradeDateTime': '2016-05-13T19:57:30Z', 'ID': '10224532', 'Index': 'FRA', 'StockSymbol': 'BMW', 'LastTradeTime': '7:57PM GMT+2'}] 
test 
Traceback (most recent call last): 
    line 11, in <module> 
    print((a)["Index"]) 

TypeError: list indices must be integers or slices, not str 

Wie Sie sehe ich bin nicht in der Lage drucke den "Index" -Wert (in diesem Fall: FRA) (letzte Codezeile des Skripts) Keine Ahnung, wie das funktionieren könnte.

+0

Sie müssen Ihre Variablen nicht in Klammern umgeben. 'b = json.dumps (getQuotes ('FRA: BMW'), indent = 2)' würde funktionieren, aber der Fehler besagt, dass man nicht auf eine Liste (etwas in der Form von '[data]') mit einem String zugreifen kann wie 'a [" index "]'. Du könntest versuchen 'a [0] [" Index "]' –

+0

Vielen Dank für deine Unterstützung! – theamokdog

Antwort

1

Sie benötigen das Modul json nicht, um diese Daten zu lesen. Es ist bereits ein Python dictionary. Der Fehler besagt, dass Sie die Liste indexieren müssen, die getQuotes zurückgibt. Da es nur ein Element gibt, können Sie [0] verwenden

>>> from googlefinance import getQuotes 
>>> fra_bmw = getQuotes('FRA:BMW') 
>>> fra_bmw[0]["Index"] 
u'FRA' 
+0

Vielen Dank für Ihre Unterstützung! Das funktioniert – theamokdog

+0

Sie können eine Antwort akzeptieren, indem Sie das Häkchen daneben drücken, um sich zu bedanken –