Pyjq-删除变量中定义的字符串集

时间:2019-12-10 10:06:19

标签: python jq

我需要过滤一些JSON,以便仅将具有www数组中没有keysstoremove键的对象保留在最终输出中。

我的代码:

import pyjq, json

keysstoremove = ["KLLIE2D", "FLLIE2D", "SLLIE2D", "ELLIE2D"]
infile = json.load(open('./test.json'))
json_object = pyjq.all('.configurations[] | {www, en_key} | select(.en_key != null)', infile)

示例输出(不正确):

[{
    "www": "BLLIE2D",
    "en_key": "hashAAAAB3NzaC1y"
},
{
    "www": "KLLIE2D",
    "en_key": "hashAAAAB3NwCXr57"
},
{
    "www": "JLLIE2D",
    "en_key": "hashnAAAt8zlnwg1Pj"
},
{
    "www": "FLLIE2D",
    "en_key": "hashAAAAB3NzaC1ycA"
{
    "www": "ELLIE2D",
    "en_key": "hashAAAAB3Nz0Md9sdvs"
},
{
    "www": "SLLIE2D",
    "en_key": "hashAAAAB3NzaC1yc2EAJ"
}]

预期输出:

[{
    "www": "BLLIE2D",
    "en_key": "hashAAAAB3NzaC1y"
},
{
    "www": "JLLIE2D",
    "en_key": "hashnAAAt8zlnwg1Pj"
}]

1 个答案:

答案 0 :(得分:0)

您的jq查询甚至没有提到keysstoremove。一种可能性是使用如下的jq查询:

def keysstoremove:
  ["KLLIE2D", "FLLIE2D", "SLLIE2D", "ELLIE2D"];

.configurations[]
| .en_key as $k
| select( keysstoremove | index($k) | not)
| {www, en_key}

一般提示

在使用诸如pyjq之类的包装器时遇到困难时,通常最简单的方法是使用jq命令行解释器来检查jq查询是否正确,该解释器通常可在主要操作系统上使用。