Python-JSON - 如何解析API输出?

时间:2016-08-20 01:30:35

标签: python json

我很新。

我编写了这个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()

然而,它给了我一个错误。我究竟做错了什么?目前,如何让它打印地址的余额?

2 个答案:

答案 0 :(得分:1)

你的问题很明确,但你的尝试没有。

你说过,你有一个文件,至少有一个以上的注册表。所以你需要检索这个文件的行。

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发送字节作为响应,因此您应该以{{1​​}}作为处理数据的方法。

答案 1 :(得分:1)

你的代码中有很多错误。这是我的修复。我推荐一个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"

你最后也不需要输入。