python - 我们如何在 jsonpath_ng python 中使用正则表达式过滤器,它将/视为排序方向。有什么替代方案吗?

标签 python json jsonpath jsonpath-ng

我正在尝试查找其 Worker Value 包含数字 880099 作为子字符串的 Worker。在这里,我尝试使用 priyanka 的员工 ID 查找她的详细信息。

我的代码。

json_data = json.loads(json_string)
from jsonpath_ng.ext import parser
query = r'$[?(@.Worker =~ /.*?880099.*/i)]'
for match in parser.parse(query).find(json_data):
   
   

JSON 数据: [{ “休假条目”:“2021 年 2 月 1 日 - 1 天 (Divakar (77877))”, " worker ": "迪瓦卡 (77877)", “请求类型”:“休假请求”, “休假/缺勤表”:“IND 年度休假”, “类型”:“年假”, “输入时间”:1611187200000, 《批准日期》:1611187200000, “休假日期”:1612137600000, “已批准”:1、 “时间单位”:“天” }, { “休假条目”:“2021 年 2 月 1 日 - 1 天 (Priyanka (880099))”, " worker ": "Priyanks (880099)", “请求类型”:“休假请求”, “休假/缺勤表”:“IND 病假/休闲假”, “类型”:“病假/事假”, “输入时间”:1612310400000, 《批准日期》:1612310400000, “休假日期”:1612137600000, “已批准”:1、 “时间单位”:“天” }]

最佳答案

您的正则表达式比较的 jsonpath-ng 语法不正确。尝试在模式周围加上引号,如下所示:

parser.parse('$[?(@.Worker =~ ".*880099.*")]').find(json_data)]

完整示例:

import json
json_string =  "[{ \"Time Off Entry\": \"1 Feb, 2021 - 1 Days (Divakar (77877))\", \"Worker\": \"Divakar (77877)\", \"Request Type\": \"Time Off Request\", \"Time Off/Absence Table\": \"IND Annual Time Off\", \"Type\": \"Annual Leave\", \"Entered On\": 1611187200000, \"Approval Date\": 1611187200000, \"Time Off Date\": 1612137600000, \"Approved\": 1, \"Unit of Time\": \"Days\" }, { \"Time Off Entry\": \"1 Feb, 2021 - 1 Days (Priyanka (880099))\", \"Worker\": \"Priyanks (880099)\", \"Request Type\": \"Time Off Request\", \"Time Off/Absence Table\": \"IND Sick/Casual Time Off\", \"Type\": \"Sick/Casual Leave\", \"Entered On\": 1612310400000, \"Approval Date\": 1612310400000, \"Time Off Date\": 1612137600000, \"Approved\": 1, \"Unit of Time\": \"Days\" }]"
json_data = json.loads(json_string)

from jsonpath_ng.ext import parser
query = [x.value for x in parser.parse('$[?(@.Worker =~ ".*880099.*")]').find(json_data)]
print(json.dumps(query))

关于python - 我们如何在 jsonpath_ng python 中使用正则表达式过滤器,它将/视为排序方向。有什么替代方案吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66380415/

相关文章:

json - JSON 文本必须至少包含两个八位字节

ruby - 如何一次访问jsonpath中的多个键

kubectl - 如何使用 kubectl -o jsonpath 仅检索 kubectl.kubernetes.io/last-applied-configuration?

python - 将此列表拆分为更小列表的最佳方法?

python - django 模型递归导入 - 如何解决

iphone - 如何检查 ios 中的 json 响应中的 key 是否可用

ios - 如何在 Swift 中将 [WeatherModel]() 分配给 JSON 类型?

c# - 如果 json 包含空数组,则 Json.NET SelectTokens 不起作用

python - Stata 与 R/Python 中数据帧的线性代数

python - 单类机争夺计划