如何删除带有空引号的json元素?

sd2nnvve  于 2023-02-06  发布在  其他
关注(0)|答案(1)|浏览(140)

在下面的python3代码中,我读取了json中的所有objects,然后在json中循环elements。如果我只搜索id is not None,则该元素和空值将被删除。但是,当我添加or语句以删除id is not ""时,打印整个文件时,或语句中的id都没有删除。作为python的新手,我不确定我做错了什么。谢谢:)。

文件

{
"objects": [
    {
        "version": "1",
        "list": [
            {
                "
                    "json": null
                },
                "id": "",
            }
        ],
        "h": "na"
    },
{
        "version": "1",
        "list": [
            {
                "
                    "json": null
                },
                "id": "This has text in it and should be printed",
            }
        ],
        "h": "na"
    },
{
        "version": "1",
        "list": [
            {
                "
                    "json": null
                },
                "id": null,
            }
        ],
        "h": "na"
    }
]
}

需要

{
        "version": "1",
        "list": [
            {
                "
                    "json": null
                },
                "id": "This has text in it and should be printed",
            }
        ],
        "h": "na"
    },

Python3

if v["id"] is not None or v['id'] is not "":

还尝试了以下操作,并更改了id

for obj in data['objects']:
if obj.get('id') is "":
    obj['description'] = 'na'
j91ykkif

j91ykkif1#

if v["id"] is not None or v['id'] is not "":

不管值是什么,这个语句都将 * 总是 * 为真。
如果值为None,则is not ""部分为true。
如果该值是空字符串,则is not None部分为真。
如果值为其他值,则两部分都为真。
正如@Pranav评论的那样,您希望在这里使用and,而不是or

相关问题