Pyjq删除variab中定义的字符串集

2024-05-19 16:26:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要过滤一些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"
}]

Tags: keyjsonwwwinfileenpyjqhashnaaat8zlnwg1pjellie2d
1条回答
网友
1楼 · 发布于 2024-05-19 16:26:20

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查询是否正确,jq命令行解释器通常适用于主要操作系统。你知道吗

相关问题 更多 >