Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从JSON变量中提取值_Python_Json_Python 3.x - Fatal编程技术网

Python 从JSON变量中提取值

Python 从JSON变量中提取值,python,json,python-3.x,Python,Json,Python 3.x,我正试图从我正在制作的网页刮板中提取一个名为balanceStr的值,但我运气不太好 到目前为止,我的收获如下: import requests import json url = "https://www.hpbscan.org/HpbScan/addrs/getAddressDetailInfo" headers = {'Content-Type': 'application/json;charset=utf-8'} body = '["0x7EC332476fCA4Bcd20176eE0

我正试图从我正在制作的网页刮板中提取一个名为balanceStr的值,但我运气不太好

到目前为止,我的收获如下:

import requests
import json

url = "https://www.hpbscan.org/HpbScan/addrs/getAddressDetailInfo"
headers = {'Content-Type': 'application/json;charset=utf-8'}
body = '["0x7EC332476fCA4Bcd20176eE06F16960b5D49333e"]'

data = requests.post(url, data=body, headers=headers)

json_data = (json.loads(data.text))
#print(json_data)
print(json_data['balanceStr'])
如果我只是打印JSON_数据,这就是输出,但我只是想得到balanceStr 36885.403的值。。。在一个变量中,这样我就可以像printcurrentbalance一样使用它

[
    "000000",
    "\u6210\u529f",
    {
        "addrs": {
            "accountType": null,
            "address": "0x7ec332476fca4bcd20176ee06f16960b5d49333e",
            "assetRankingOrder": "150",
            "balance": 36885403823844342504238,
            "balanceStr": "36885.40382384",
            "createTimestamp": 1569209857000,
            "fromCount": 22,
            "lastestBlock": 3951440,
            "map": {},
            "number": 229,
            "percentRate": "0.0369%",
            "startBlock": 51601,
            "toCount": 15
        },
        "hpbInstantPrice": {
            "changePercent": "-6.65%",
            "cnyPrice": "1.9890",
            "id": 1,
            "map": {},
            "updateTime": 1569210840000,
            "usdPrice": "0.2791"
        },
        "nonce": 22
    }
]
当我打印JSON_数据['balanceStr']时,我得到的错误是:

    print(json_data['addrs'])
TypeError: list indices must be integers or slices, not str
任何帮助都将不胜感激

json_数据包含对象列表。你可以用

json_数据[2]['addrs'] 读取第三个对象,它似乎是您试图访问的对象

然后

json_数据[2]['addrs'][balanceStr]
要读取所需的最终值。

正如错误消息所述,json_数据是一个列表。您需要的项位于json_数据[2]中。但是您需要的特定部分balanceStr位于名为addrs的元素中。综上所述,您可以得到:

json_data[2]['addrs']["balanceStr"]

看起来json的最低级别是一个列表,这意味着获取获取“balanceStr”所需的dict对象。在本例中,它的json_数据[2]['addrs'][balanceStr]

json_data[2]['addrs']["balanceStr"]
这里

输出

36886.89003793

将json输出视为可能包含嵌套字典或列表的字典/列表,您应该相应地处理每个变量

尝试:

json_data[2]['addrs']['balancestr']
输出:

36885.40382384
在这种情况下,json_数据必须作为包含嵌套dictionaries的列表进行寻址。你需要说明addrs所在的位置。同时检查此答案,因为这是重复的。

感谢您的帮助,我尝试了您的版本,但遗憾的是没有得到相同的输出:balance_str=data[2]['addrs']['balanceStr']TypeError:'Response'对象不可订阅,但您已经帮我找到了[2]['addrs']['balanceStr']所需的解决方案!data=requests.postrl,data=body,headers=headers.json请参见代码中的这一行。确保你有它
36885.40382384