代码之家  ›  专栏  ›  技术社区  ›  Rio

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

  •  0
  • Rio  · 技术社区  · 7 年前

    我尝试使用 .split()[-1] 使用pyjq,但失败时出错: jq: error: syntax error, unexpected '('

    键/值-“subject”:“用户具有用户id:2432343f3f-34kfert-343mn5788886”

    [
        {
            "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 回复  |  直到 7 年前
        1
  •  1
  •   peak    7 年前

    jq的 split splits 相反,它需要一个正则表达式参数。然而, 分裂

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