如何在 Python 中使用正则表达式提取 JSON 字符串的特定部分?
Posted
技术标签:
【中文标题】如何在 Python 中使用正则表达式提取 JSON 字符串的特定部分?【英文标题】:How can I extract a specific section of a JSON string using a regex in Python? 【发布时间】: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 好的,现在我明白了,谢谢!
【参考方案1】:
您的字符串是有效的 JSON 内容,因此将其加载为 python 结构:dict
,然后使用键 k
和 c
访问数据
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:字符串索引必须是整数” 您可以在这里添加您的代码,我们可以查看它,看看有什么问题? 没关系,我找到了问题,您的解决方案也有效^^谢谢!以上是关于如何在 Python 中使用正则表达式提取 JSON 字符串的特定部分?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Python 中使用正则表达式从同一个字符串中提取多个值?