如何在jsonpath_ng python中使用正则表达式过滤器,它将/视为排序方向。还有别的选择吗?

2024-06-25 22:40:04 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图找到其Worker值包含数字880099作为子字符串的Worker。在这里,我试图用她的员工ID找到priyanka的详细信息

我的密码

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))”, “工人”:“Divakar(77877)”, “请求类型”:“请假请求”, “休假/缺勤表”:“IND年度休假”, “类型”:“年假”, “输入日期”:1611187200000, “批准日期”:1611187200000, “暂停日期”:161213760000, “批准”:1, “时间单位”:“天” }, { “休假入境”:“2021年2月1日-1天(普里扬卡(880099))”, “工人”:“普里扬克斯(880099)”, “请求类型”:“请假请求”, “休假/缺勤表”:“因病休假/临时休假”, “类型”:“病假/事假”, “输入日期”:1612310400000, “批准日期”:1612310400000, “暂停日期”:161213760000, “批准”:1, “时间单位”:“天” }]


Tags: 字符串jsonparser类型data时间员工单位
1条回答
网友
1楼 · 发布于 2024-06-25 22:40:04

用于正则表达式比较的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))

相关问题 更多 >