尝试拆分行以选择最后一个单词时出现pyjq错误

2024-05-19 15:53:53 发布

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

我正在尝试使用pyjq的.split()[-1]来剪切json键值的最后一个字,但是失败了,出现了错误:jq: error: syntax error, unexpected '('

The key/value - "subject": "The user has user id: 2432343f3f-34kfert-343mn5788886"

JSON:

[
    {
        "id": "The user has user id: 76e195fa-67f1-4ea6-bb0e-29c123855978",
        "date": "2018-11-01T08:41:53Z"
    },
    {
        "id": "The user has user id: 195fa76e-67f1-4ea6-bb0e-5597829c1238",
        "date": "2018-10-31T14:43:04Z"
    }
]

response_read = open('my.json', 'r')
response_read_parsed = json.loads(response_read.read())
rule = pyjq.all('.value[] | { "id": .["subject"].split()[-1], "date": .receivedDateTime }', response_read_parsed)

但是如果我在没有pyjq的情况下编写,这种方法是有效的

myid= (response_read_parsed['subject'].split()[-1])
print json.dumps(myid, indent=4)

由于上面有多个条目,我决定使用pyjq进行过滤。你知道吗

我犯了什么错误吗?我还是搞不懂。请帮忙。非常感谢你。你知道吗


Tags: theidjsonreaddatevalueresponse错误
1条回答
网友
1楼 · 发布于 2024-05-19 15:53:53

jq的split需要一个参数,该参数必须是有效的JSON字符串。在您的例子中,您可能希望使用splits,因为它接受正则表达式参数。但是,splits会产生一个流,因此您可能希望按照以下行编写一些内容:

.value[]
| { "id": [.["subject"] | splits("  *")][-1],
    "date": .receivedDateTime }

相关问题 更多 >