我創建了一個python應用程序來解析一個json API。
有3個端點和1個這些擔心我。
端點是:http://coinmarketcap.northpole.ro/history.json?coin=PCN當我解析一個JSON時出錯
我的代碼:
def getHistory(self, coin):
endpoint = "history.json?year=2017&coin=PCN"
data = urllib2.urlopen(self.url + endpoint).read()
data = json.loads(data)['history']
return data
def getOrder(self):
for c in self.getCoinsList():
res = []
symbol = c['symbol']
price = self.getCoinPrice(symbol)
count = 0
count_days = len(self.getHistory(symbol))
for h in self.getHistory(symbol):
if h['price']['usd'] > price:
++count
percent_down = count_days/count * 100
line = {'symbol': symbol, 'price': price, 'percent_down': percent_down}
res.append(line)
return res
當我試圖讓h['price']['usd']
我有這樣的:
File "coinmarketcap.py", line 39, in getOrder
if h['price']['usd'] > price:
TypeError: string indices must be integers
當我做print type(h)
它返回Unicode。
所以,你已經證實,h是一個字符串,錯誤表示字符串索引必須是整數。您正試圖使用其他字符串爲該字符串編制索引。 – SuperShoot
但我想要h ['price'] ['usd'],我該怎麼做? – Pixel
我假設'getHistory'返回一個字典,你就像這樣迭代它:'for self.getHistory(symbol)'中的h。這給你字典_keys_,而不是_values_。在self.getHistory(symbol).values()'中試試'h。 –