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

如何在Python中删除JSON文件内列表的指定元素及报错修复

解决JSON文件中列表字符串的元素删除问题

你的问题根源有两个:

  1. JSON里的language值是字符串形式的列表,不是真正的JSON数组,所以json.load读取后,data["language"]是字符串,不是可直接操作的列表。
  2. 你的代码写法完全错误,list(data["language"]['Spanish'])既不能正确转换列表,del的用法也不符合Python语法。

正确解决步骤

方案1:保留原字符串格式处理(不推荐,后续操作仍繁琐)

用ast.literal_eval把字符串形式的列表转成真正的Python列表,删除元素后再转回字符串:

import json
import ast

# 读取JSON文件
with open("example.json", "r") as jsonFile:
    data = json.load(jsonFile)

# 将字符串列表转为可操作的Python列表
lang_list = ast.literal_eval(data["language"])
# 移除目标元素
if 'Spanish' in lang_list:
    lang_list.remove('Spanish')
# 转回字符串格式(保持原JSON结构)
data["language"] = str(lang_list)

# 写回JSON文件
with open("example.json", "w") as jsonFile:
    json.dump(data, jsonFile)

方案2:改为标准JSON数组(推荐,后续操作更规范)

更合理的做法是把JSON里的language改成真正的数组(去掉外层引号,直接用方括号定义列表),这样读取后直接就是Python列表:

修改后的JSON文件内容:

{"language": ["English", "French", "Spanish"], "bank": 50}

之后用以下代码操作:

import json

with open("example.json", "r") as jsonFile:
    data = json.load(jsonFile)

# 直接操作列表删除元素
if 'Spanish' in data["language"]:
    data["language"].remove('Spanish')

with open("example.json", "w") as jsonFile:
    json.dump(data, jsonFile)

补充提示

  • ast.literal_eval比eval更安全,专门用于解析字符串形式的Python字面量(列表、字典等)。
  • 加入if 'Spanish' in ...的判断,可避免元素不存在时抛出异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 14:20:19