我正在尝试使用.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进行过滤。
我做错了吗?我仍然无法弄清楚。请帮忙。非常感谢。
答案 0 :(得分:1)
jq的split
需要一个参数,该参数必须是有效的JSON字符串。在您的情况下,您可能需要使用splits
,因为它需要一个正则表达式参数。但是,splits
会产生一个流,因此您可能想按照以下方式写点东西:
.value[]
| { "id": [.["subject"] | splits(" *")][-1],
"date": .receivedDateTime }