从python中的json文件中删除行

Posted

技术标签:

【中文标题】从python中的json文件中删除行【英文标题】:Remove lines from jsonfile in python 【发布时间】:2022-01-21 02:23:25 【问题描述】:

我的问题是我有一个包含空 obj 的 json 文件,我想从这个 json 文件中删除它们并将其保存在一个新的 json 文件中。

这里我的 json 示例称为 db_origin.json :

[
    # Would like remove this
    #====================#
    ,
    ,
    ,
    ,
    ,
    #====================#
    
        "model": "auth.user",
        "pk": *,
        "fields": 
            "password": "*********",
            "last_login": "********",
            "is_superuser": true,
            "username": "******",
            "first_name": "",
            "last_name": "",
            "email": "",
            "is_staff": true,
            "is_active": true,
            "date_joined": "2016-12-08T11:04:07",
            "groups": [
                1
            ],
            "user_permissions": []
        
    ,
    ,
    ,
]

我尝试做的事情:

import json

def read_write():
    with open('db_origin.json') as json_file:
        lines = json_file.readlines()
        for line in lines:
            line.replace(('    ,\n'), "")

        with open('cleaned.json', 'w') as f:
            json.dump(lines, f, indent=4)
            

read_write()

【问题讨论】:

嗨!欢迎来到堆栈溢出!不幸的是,除非您发布您编写的代码,否则 SO 社区将无法提供帮助。我们不是邮购代码。 【参考方案1】:

首先,这不是一个有效的 JSON,所以在修复它并使其成为有效的 JSON 之后,您可以通过这种方式从列表中过滤空字典。

import json
json_str='''[,,,,,"model":"auth.user","pk":"*","fields":"password":"*********","last_login":"********","is_superuser":true,"username":"******","first_name":"","last_name":"","email":"","is_staff":true,"is_active":true,"date_joined":"2016-12-08T11:04:07","groups":[1],"user_permissions":[],,]'''
python_list = json.loads(json_str)
filtered_empty = list(filter(None, python_list))
print(filtered_empty)

完整代码:

import json

def read_write():
    with open('db_origin.json') as json_file:
        python_list = json.load(json_file)
        filtered_empty = list(filter(None, python_list))

    with open('cleaned.json', 'w') as f:
        json.dump(filtered_empty, f, indent=4)
            

read_write()

【讨论】:

以上是关于从python中的json文件中删除行的主要内容,如果未能解决你的问题,请参考以下文章

从python中的文本文件中读取行(windows)

如何通过 BASH 中的 sed 命令从 Json 文件中删除 Json 对象

如何将参数从命令行传递到 python 脚本以读取和更新 json 文件中存在的某些键的值

如何从scrapy中的json文件中读取行

Spark - 如何从 S3 读取具有文件名的多个 Json 文件

如何使用 tsconfig.json 中的设置从命令行键入检查单个文件?