You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python删除JSON文件中的指定书籍数据?详解实现方法

从JSON文件中移除指定书籍数据的详细实现方法

先明确我们的基础数据示例:

原始JSON文件内容

{
  "books": [
    {
      "id": 1,
      "title": "百年孤独",
      "author": "加西亚·马尔克斯"
    },
    {
      "id": 2,
      "title": "活着",
      "author": "余华"
    },
    {
      "id": 3,
      "title": "三体",
      "author": "刘慈欣"
    }
  ]
}

待删除的书籍条目

我们要移除的是id为2的《活着》,对应的条目:

{
  "id": 2,
  "title": "活着",
  "author": "余华"
}

期望的最终结果

{
  "books": [
    {
      "id": 1,
      "title": "百年孤独",
      "author": "加西亚·马尔克斯"
    },
    {
      "id": 3,
      "title": "三体",
      "author": "刘慈欣"
    }
  ]
}

核心思路

本质就是读取JSON数据 -> 筛选掉目标条目 -> 将筛选后的结果写回文件,关键是选对可靠的匹配条件(别直接对比整个条目,用唯一标识更稳妥)。


具体实现(以Python为例,最常用的脚本语言)

1. 读取JSON文件

用Python自带的json模块读取文件内容,转成可操作的字典/列表:

import json

# 打开并读取原始JSON文件
with open('books.json', 'r', encoding='utf-8') as file:
    book_data = json.load(file)

2. 筛选要保留的书籍

这里用书籍id作为匹配条件(id是唯一标识,不会重复,比对比书名/作者靠谱),用列表推导式快速筛选:

# 待删除书籍的id,从待删除条目中提取即可
target_id = 2

# 过滤掉id等于target_id的书籍,剩下的就是要保留的
filtered_books = [book for book in book_data['books'] if book['id'] != target_id]

# 更新原数据中的books列表
book_data['books'] = filtered_books

3. 将结果写回JSON文件

把处理好的数据重新写入文件,注意参数保证中文显示正常、格式美观:

with open('updated_books.json', 'w', encoding='utf-8') as file:
    # ensure_ascii=False 避免中文被转成Unicode编码;indent=4 格式化输出,方便阅读
    json.dump(book_data, file, ensure_ascii=False, indent=4)

关键要点说明

  • 为什么用id匹配?:如果直接对比整个书籍字典,可能因为字段顺序不同(比如待删除条目里字段顺序和原始数据不一样)、或存在额外字段导致匹配失败,id作为唯一标识是最可靠的判断依据。
  • 列表推导式的优势:比循环遍历+条件判断的写法更简洁高效,一行代码就能完成筛选。
  • 写回文件的参数:ensure_ascii=False必须加,否则中文会变成\uXXXX这种Unicode编码;indent=4是可选的,让输出的JSON排版整齐,方便人工查看。

补充:Node.js实现(前端/后端常用)

如果用JavaScript处理,逻辑完全一致:

const fs = require('fs');

// 读取文件并解析成JSON对象
const bookData = JSON.parse(fs.readFileSync('books.json', 'utf8'));

// 过滤数据
const targetId = 2;
bookData.books = bookData.books.filter(book => book.id !== targetId);

// 写回文件
fs.writeFileSync('updated_books.json', JSON.stringify(bookData, null, 4), 'utf8');

内容的提问来源于stack exchange,提问作者Moustafa Abouamer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 17:55:21