如何在Python中使用正则提取JSON字符串的指定字段内容
问题解决方案
方案1:优先使用JSON解析(更稳定,推荐)
你给出的字符串是标准JSON格式,直接用编程语言内置的JSON解析工具提取数据,比正则更不容易出错,Python示例代码如下:
import json resp = '{"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"}}' data = json.loads(resp) # 直接获取c对应的数值 c_value = data['k']['c'] print(c_value) # 输出 0.57200000 # 如果需要获取"c":"0.57200000"片段 c_fragment = f'"c":"{c_value}"' print(c_fragment) # 输出 "c":"0.57200000"
方案2:正则匹配方案
你原来的正则r'^\"c\",$'存在以下问题:
^和$分别表示匹配字符串开头和结尾,意味着只有当整个字符串完全等于"c",时才会匹配,显然不符合你的场景- 没有匹配
c对应的数值部分
匹配"c":"0.57200000"完整片段的正则
import re resp = '{"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"}}' match_res = re.search(r'"c":"[\d.]+?"', resp) if match_res: print(match_res.group()) # 输出 "c":"0.57200000"
直接提取c对应的数值的正则
用分组捕获数值部分即可:
match_res = re.search(r'"c":"([\d.]+?)"', resp) if match_res: c_value = match_res.group(1) print(c_value) # 输出 0.57200000
内容的提问来源于stack exchange,提问作者truth94
相关产品推荐
相关产品推荐

