Python-JSON - 如何解析API输出?
我写这个python脚本实现从blockr.io的API调用来检查多个比特币地址的平衡。
btcaddy.txt的内容是用逗号分隔的比特币地址。对于这个例子,让它解析this。
import urllib2
import json
btcaddy = open("btcaddy.txt","r")
urlRequest = urllib2.Request("http://btc.blockr.io/api/v1/address/info/" + btcaddy.read())
data = urllib2.urlopen(urlRequest).read()
json_data = json.loads(data)
balance = float(json_data['data''address'])
print balance
raw_input()
但是,它给了我一个错误。我究竟做错了什么?现在,我如何才能打印剩余的地址?
你在代码中做了多件事情。这是我的修复。我推荐一个for循环。
import json
import urllib
addresses = open("btcaddy.txt", "r").read()
base_url = "http://btc.blockr.io/api/v1/address/info/"
request = urllib.urlopen(base_url+addresses)
result = json.loads(request.read())['data']
for balance in result:
print balance['address'], ":" , balance['balance'], "BTC"
您最后也不需要输入。
你的问题很清楚,但你的尝试不是。
你说过,你有一个文件,至少不止于注册表。所以你需要检索这个文件的行。
with open("btcaddy.txt","r") as a:
addresses = a.readlines()
现在您可以迭代注册表并向此uri发出请求。 urllib
模块足以完成此任务。
import json
import urllib
base_url = "http://btc.blockr.io/api/v1/address/info/%s"
for address in addresses:
request = urllib.request.urlopen(base_url % address)
result = json.loads(request.read().decode('utf8'))
print(result)
HTTP发送字节作为回应,所以你应该给我们decode('utf8')
的方法来处理数据。
当我尝试你的代码中的错误它不会伤害,我得到 (AttributeError的:“模块”对象有没有属性“请求”) –
也许应该仅仅是:'请求=了urllib.urlopen() ' – zachyee
如果你使用Python 2,你应该使用@ zachyee的方法。 –
感谢张贴你的代码,但请放一点描述你的问题:什么是你有问题,什么是你所期望的结果,[你尝试过什么(http://whathaveyoutried.com)等等远?通过[问题清单](http://meta.*.com/questions/156810/stack-overflow-question-checklist)将帮助我们更好地回答你的问题。谢谢! “'data''address''后面缺少逗号和括号? –
?你确定数据的内容是json格式吗?如果你加你看到 – 2016-08-20 01:46:01