Python 从JSON变量中提取值
我正试图从我正在制作的网页刮板中提取一个名为balanceStr的值,但我运气不太好 到目前为止,我的收获如下: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
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