【问题标题】:How can I extract a specific section of a JSON string using a regex in Python?如何在 Python 中使用正则表达式提取 JSON 字符串的特定部分?
【发布时间】:2021-12-23 23:16:04
【问题描述】:

所以我有一个看起来像这样的字符串(例如):

{"e":"kline","E":1636631940480,"s":"EPSUSDT","k":{"t":1636631880000,"T":1636631939999,"s":"EPSUSDT","i":"1m","f":15980499,"L":15980734,"o":"0.56630000","c":"0.57200000","h":"0.57300000","l":"0.56630000","v":"280740.00000000","n":236,"x":true,"q":"159924.80310000","V":"150693.00000000","Q":"85802.85780000","B":"0"}}

我正在尝试从中提取某些值,假设我希望正则表达式返回 "c":"0.57200000" 或只是 0.57200000 的值。

我尝试了这段代码(至少能够得到“c”),但它什么也没给我:

re.search(r'^\"c\",$', resp) # resp is the string variable

我是正则表达式的新手,即使搜索了 2 个小时,我仍然无法做到...

【问题讨论】:

  • 那不是字符串,就是dict,是什么变量类型保存的?
  • ideone.com/eLfqQZ,这是一个有效的JSON。
  • @azro 哦...很奇怪,因为当我输入 (type(resp)) 它返回
  • 那是因为你在这里粘贴它的方式,当你显示打印的内容时,我们可以认为它是一个字典,最好将'{"e":"kline","E":1636631940480,"s"...}' but 显示为只有双引号,true(而不是True)我们知道这是一个 JSON 刺
  • @WiktorStribiżew 好的,现在我明白了,谢谢!

标签: python json string


【解决方案1】:

您的字符串是有效的 JSON 内容,因此将其加载为 python 结构:dict,然后使用键 kc 访问数据

import json

value = '{"e":"kline","E":1636631940480,"s":"EPSUSDT","k":{"t":1636631880000,"T":1636631939999,' \
        '"s":"EPSUSDT","i":"1m","f":15980499,"L":15980734,"o":"0.56630000","c":"0.57200000",' \
        '"h":"0.57300000","l":"0.56630000","v":"280740.00000000","n":236,"x":true,' \
        '"q":"159924.80310000","V":"150693.00000000","Q":"85802.85780000","B":"0"}}'

value = json.loads(value)
print(value['k']['c'])  # 0.57200000

【讨论】:

  • 好的,谢谢它现在可以工作了
  • 不错。如果你不知道c 是嵌套的,可以使用print(nested_lookup('c', json.loads(value))[0])。不知道有没有更简单的方法。
【解决方案2】:

您正试图从dict 而不是字符串中获取一些值。

    dict = {"e": "kline", "E":1636631940480,"s":"EPSUSDT","k":{"t":1636631880000,"T":1636631939999,"s":"EPSUSDT","i":"1m","f":15980499,"L":15980734,"o":"0.56630000","c":"0.57200000","h":"0.57300000","l":"0.56630000","v":"280740.00000000","n":236,"x":True,"q":"159924.80310000","V":"150693.00000000","Q":"85802.85780000","B":"0"}}

print(dict["k"]["c"])

【讨论】:

  • 我不知道我是否做错了什么,但它返回“TypeError:字符串索引必须是整数”
  • 您可以在这里添加您的代码,我们可以查看它,看看有什么问题?
  • 没关系,我找到了问题,您的解决方案也有效^^谢谢!
猜你喜欢
  • 2016-10-06
  • 1970-01-01
  • 2021-12-30
  • 2015-12-31
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2019-03-13
相关资源
最近更新 更多