Python читает данные из API, typeError: индексы списка должны быть целыми числами, а не str - PullRequest
0 голосов
/ 01 ноября 2018

Я новичок в питоне. Я пытаюсь прочитать некоторые данные из API, но есть проблема во втором URL, я не знаю, как анализировать API, когда у меня есть больше данных. Первый URL имеет только одно "NAME", второй имеет больше NAMES .... Как я могу напечатать все имена из второго URL ... Thankyou ...

import os
from urllib import urlopen
import json

url = urlopen('https://www.coincalculators.io/api.aspx?name=ethereum&hashrate=420000000&power=0&poolfee=1&powercost=0&difficultytime=0').read()
data= json.loads(url)  
name = data["name"] # OK
print name
rewardsInMonth = data["rewardsInMonth"] # OK
print rewardsInMonth
#url with more names
url2 = urlopen('https://www.coincalculators.io/api/allcoins.aspx?hashrate=420000000&power=0&powercost=0&difficultytime=0&algorithm=Ethash').read()
data2= json.loads(url2)  
name2 = data2["name"] # OK
print name2

Я вижу квадратную скобку во втором URL, и вот проблема для меня.

1 Ответ

0 голосов
/ 01 ноября 2018

Различные конечные точки этого API возвращают разные структуры данных. Первый вызов возвращает только один диктовку, второй (к конечной точке allcoins.aspx), что неудивительно, список диктов.

Очень вежливо подталкивая вас в направлении Python 3 и модуля requests, второй URL возвращает список, поэтому вы можете использовать цикл for для перебора монет:

import requests

coin = requests.get("https://www.coincalculators.io/api.aspx?name=ethereum&hashrate=420000000&power=0&poolfee=1&powercost=0&difficultytime=0").json()
print(coin["name"])

for coin in requests.get("https://www.coincalculators.io/api/allcoins.aspx?hashrate=420000000&power=0&powercost=0&difficultytime=0&algorithm=Ethash").json():
    print(coin["name"])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...