Пишет ошибку-list indices must be integers or slices, как исправить?
url1="https://blockchain.info/multiaddr?active=1PVyuZZfUa2QeU2S14QvdVRv3CqPxbhur3|1BALRjHSDtepK186o8yR4YZi6T88F6G5L"
rr = requests.get(url1)
jsonresponse = json.loads(rr.text)
df = jsonresponse['addresses']['address'] + ':balance:' + jsonresponse['addresses']['final_balance']
if jsonresponse['addresses']['final_balance'] >= 0:
print(df)
write = open('\\BTCballiorqq.txt', "a")
write.write(df)
elif jsonresponse['addresses']['final_balance'] == 0:
print(df)
Как исправить если есть другие варианты?Просто решил поработать с блиотекой.
Ответы (1 шт):
Следующий код будет работать, расскажу об исправлениях.
Исправление 1 - jsonresponse['addresses'] возвращает список словарей, соответственно, чтобы обратиться к следующему словарю, нужно сначала обратиться к элементу списка, что и делает строчка jsonresponse['addresses'][0], после этого можно уже дальше обращаться к словарям jsonresponse['addresses'][0]['address']. Так же jsonresponse['addresses'][0]['final_balance'] возвращает числовое значение, вы пытаетесь его сложить со строкой, что вызовет TypeError, поэтому это значение приводим к строковому виду str(jsonresponse['addresses'][0]['final_balance'])
Исправление 2 - аналогично обращаемся к элементу списка, а после к словарю. Так же у вас неправильная логика программы, здесь следует поставить знак > вместо >=, т.к, при балансе равном нулю в вашем коде второе условие никогда не выполнится.
Исправление 3 - Вы открываете текстовый файл с помощью open без контекстного менеджера with, а потом забываете его закрыть, это плохая практика. Лучше использовать контекстный менеджер with as, дабы файл по выполнению всех действий над ним закрывался
import requests
import json
url1="https://blockchain.info/multiaddr?active=1PVyuZZfUa2QeU2S14QvdVRv3CqPxbhur3|1BALRjHSDtepK186o8yR4YZi6T88F6G5L"
rr = requests.get(url1)
jsonresponse = json.loads(rr.text)
df = jsonresponse['addresses'][0]['address'] + ':balance:' + str(jsonresponse['addresses'][0]['final_balance']) # исправление 1
if jsonresponse['addresses'][0]['final_balance'] > 0: # исправление 2
print(df)
with open('btc.txt', 'a') as f: # исправление 3
f.write(df + '\n')
elif jsonresponse['addresses']['final_balance'] == 0:
print(df)