Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Pyjq-删除变量中定义的字符串集_Python_Jq - Fatal编程技术网

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

Python Pyjq-删除变量中定义的字符串集,python,jq,Python,Jq,我需要过滤一些JSON,这样只有带有www键且不在keystoremove数组中的对象才会保留在最终输出中 我的代码: import pyjq, json keysstoremove = ["KLLIE2D", "FLLIE2D", "SLLIE2D", "ELLIE2D"] infile = json.load(open('./test.json')) json_object = pyjq.all('.configurations[] | {www, en_key} | select(.en

我需要过滤一些JSON,这样只有带有
www
键且不在
keystoremove
数组中的对象才会保留在最终输出中

我的代码:

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"
}]
预期输出:

[{
    "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"
}]

您的jq查询甚至没有提到
keystoremove
。一种可能是使用jq查询,例如:

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

.configurations[]
| .en_key as $k
| select( keysstoremove | index($k) | not)
| {www, en_key}
一般提示
在使用pyjq这样的包装器时遇到困难时,通常最简单的方法是使用jq命令行解释器检查jq查询是否正确,这通常适用于主要操作系统。

如果您能够提供
test.json
的内容,这将有所帮助。感谢您的回复。由于某些原因,我无法让您的代码与bashjq一起工作。我在哪里定义我应该排除的字符串。我尝试了cat file.json | jq.configurations[]|。en|key为$k | select(“KLLIE2D”| index($k)| not){www,en|u key}答案中显示的jq过滤器包含一个
def
。非常感谢!