【问题标题】:In my fetched json data, how can I seperate out the balance?在我获取的 json 数据中,我怎样才能分离出余额?
【发布时间】:2018-07-17 22:38:21
【问题描述】:

所以,我一直在测试 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 数据?

编辑:请帮忙!找不到解决办法。

【问题讨论】:

    标签: json python-3.6 cryptocurrency


    【解决方案1】:

    尝试使用一些正则表达式。

    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("(?&lt;=available_balance': ').*?(?=')") 编译正则表达式以查找可用余额的数据。
    正则表达式分解

    • (?&lt;= 是一个lookbehind,这意味着它将检查该值是否实际上是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())
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-16
      • 2017-09-05
      • 2019-12-17
      • 2018-05-28
      • 2011-05-20
      • 1970-01-01
      • 2022-01-23
      • 2015-06-13
      相关资源
      最近更新 更多