所以,我一直在测试block.io api,到目前为止,我已经做到了:
knee = block_io.get_address_balance(labels='shibe1')
s1 = json.dumps(knee)
d2 = json.loads(s1)
print (d2)
它向我返回此批文本:
{'status': 'success', 'data': {'network': 'DOGE', 'available_balance': '0.0', 'pending_received_balance': '0.0', 'balances': [{'user_id': 1, 'label': 'shibe1', 'address': 'A9Bda9UMBcb1183PtsBxnbj5QgP6jwkCFG', 'available_balance': '0.00000000', 'pending_received_balance': '0.00000000'}]}}
我将如何获取它,以便仅获取其中的available_balance部分,并打印出而不是所有json数据?
编辑:请帮助!找不到解决方法。
答案 0 :(得分:0)
尝试使用一些正则表达式。
import re
data="{'status': 'success', 'data': {'network': 'DOGE', 'available_balance': '0.129',
'pending_received_balance': '0.0', 'balances': [{'user_id': 1, 'label': 'shibe1',
'address': 'A9Bda9UMBcb1183PtsBxnbj5QgP6jwkCFG', 'available_balance': '0.00000000',
'pending_received_balance': '0.00000000'}]}}"
pattern = re.compile("(?<=available_balance': ').*?(?=')")
matches = pattern.finditer(data)
for match in matches:
print(match.group())
故障:
import re
导入python内置的正则表达式库
data="{'status': 'success', 'data': {'network': 'DOGE', 'available_balance': '0.129',
'pending_received_balance': '0.0', 'balances': [{'user_id': 1, 'label': 'shibe1',
'address': 'A9Bda9UMBcb1183PtsBxnbj5QgP6jwkCFG', 'available_balance': '0.00000000',
'pending_received_balance': '0.00000000'}]}}"
是一个包含要匹配数据的字符串。您可以将其替换为json数据。
pattern = re.compile("(?<=available_balance': ').*?(?=')")
编译用于查找可用余额数据的正则表达式。
正则表达式明细
(?<=
是一个后置对象,这意味着它将检查该值是否实际上为available_balance
。 .*
匹配已定义约束内的所有内容。(?=
是一个前行,这意味着它将匹配在右括号之前的所有内容以及在后括号之后的所有内容。
pattern.finditer(data)
将正则表达式与data
相匹配
for match in matches:
print(match.group())
从正则表达式中打印匹配项。
如果编译此代码,将得到以下结果:
0.129
0.00000000
如果要在变量下使用代码,请执行以下操作:
import re
pattern = re.compile("(?<=available_balance': ').*?(?=')")
matches = pattern.finditer(d2)
for match in matches:
print(match.group())