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

时间:2018-11-02 13:34:05

标签: python json jq

我正在尝试使用.split()[-1]和pyjq来剪切json键值的最后一个单词,但失败并显示错误:jq: error: syntax error, unexpected '('

  

键/值-“主题”:“用户的用户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进行过滤。

我做错了吗?我仍然无法弄清楚。请帮忙。非常感谢。

1 个答案:

答案 0 :(得分:1)

jq的split需要一个参数,该参数必须是有效的JSON字符串。在您的情况下,您可能需要使用splits,因为它需要一个正则表达式参数。但是,splits会产生一个流,因此您可能想按照以下方式写点东西:

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