如何从requests.post json响应中查找和使用某些结果?

问题描述

我是python的新手,但是我自己学习了自己创建crypto.com交易机器人并使其工作的方法。我以前从未编码过,所以这真的很有趣:)

但是,我遇到的一个问题是如何从request.post json响应中查找某些字符串,并使用它仅打印该行中的数据?目前,我正在这样做:

balance = requests.post(url=URL + "/v1/account",data=params,json=json)


this is what I get:

 {'code': '0','msg': 'suc','data': {'total_asset': '0','coin_list': [{'normal': '0.000000000000000000','locked': '0.000000000000000000','coin': 'ENJ'},{'normal': '1506.701942200000000000','coin': 'CRO'},{'normal': '0','locked': '0','coin': 'KNC'},'coin': 'VET'},{'normal': '0.000059800000000000','coin': 'paxG'},{'normal': '0.000096800000000000','coin': 'USDT'},'coin': 'ALGO'},'coin': 'ATOM'},'coin': 'XRP'},'coin': 'XLM'},'coin': 'LINK'},'coin': 'XTZ'},'coin': 'BCH'},'coin': 'EOS'},'coin': 'DAI'},{'normal': '0.000000000000000000','coin': 'BTC'},{'normal': '0.003788320000000000','coin': 'BAT'},'coin': 'ETC'},{'normal': '0.014441820000000000','coin': 'ETH'},'coin': 'MCO'},{'normal': '0.004229970000000000','coin': 'NEO'},'coin': 'LTC'},'coin': 'USDC'},'coin': 'ADA'},'coin': 'ICX'}]}}


Then I get coins that I want to Trade like this:

balance1 = balance.json()
balance2 = balance1.get('data')
balance3 = balance2.get('coin_list')
balanceCRO = balance3[1]
balanceETH = balance3[19]
CROopen = balanceCRO.get('normal')
CROlocked = balanceCRO.get('locked')
ETHopen = balanceETH.get('normal')
ETHlocked = balanceETH.get('locked')

这可以按照我希望的方式工作,但是当他们添加新硬币时,CRO和ETH的位置会发生变化,因此我每次必须手动将balance [1],balance [19]更改为相应的数字他们有。

是否有一种方法可以从响应列表中找到某些字符串(在本例中为CRO和ETH)并使用它从那些字符串中获取值?

对不起,如果我解释不好,我仍在学习:)预先谢谢!

解决方法

这是一种不受添加或删除影响的数据排序方式:

response = {'code': '0','msg': 'suc','data': {'total_asset': '0','coin_list': [{'normal': '0.000000000000000000','locked': '0.000000000000000000','coin': 'ENJ'},{'normal': '1506.701942200000000000','coin': 'CRO'},{'normal': '0','locked': '0','coin': 'KNC'},'coin': 'VET'},{'normal': '0.000059800000000000','coin': 'PAXG'},{'normal': '0.000096800000000000','coin': 'USDT'},'coin': 'ALGO'},'coin': 'ATOM'},'coin': 'XRP'},'coin': 'XLM'},'coin': 'LINK'},'coin': 'XTZ'},'coin': 'BCH'},'coin': 'EOS'},'coin': 'DAI'},{'normal': '0.000000000000000000','coin': 'BTC'},{'normal': '0.003788320000000000','coin': 'BAT'},'coin': 'ETC'},{'normal': '0.014441820000000000','coin': 'ETH'},'coin': 'MCO'},{'normal': '0.004229970000000000','coin': 'NEO'},'coin': 'LTC'},'coin': 'USDC'},'coin': 'ADA'},'coin': 'ICX'}]}}
data = response["data"]
coins = data["coin_list"]
coins_dict = {}
for coin in coins:
    coins_dict[coin["coin"]] = coin
    
print(coins_dict["CRO"])

这将输出:

{'normal': '1506.701942200000000000','coin': 'CRO'}

我相信balanceCRO代表您的原始代码。