为啥在replit中删除列表时json会出错
Posted
技术标签:
【中文标题】为啥在replit中删除列表时json会出错【英文标题】:Why json has an erroe when deleted a list in replit为什么在replit中删除列表时json会出错 【发布时间】:2021-12-27 06:27:24 【问题描述】:我试图删除 json 文件内的列表中的单个索引
文件
"0": [
"0",
"1",
"2",
"3"
]
计划
import json
with open("main.json","r") as jsonfile:
jsonfile = json.load(jsonfile)
key = "0"
index = int(input("which index u want to remove: "))
with open("main.json","r+") as f:
if key in jsonfile:
#jsonfile[key].append(str(index))
del jsonfile[key][index]
json.dump(jsonfile,f,indent=3)
这是程序删除索引后的样子:
请说出如何解决这个问题。我正在使用 repl.it
【问题讨论】:
r+
不会截断文件。您一直在覆盖开头,但结尾仍留在文件中。
【参考方案1】:
错误在于应该是“w”的“r+”:
import json
with open("main.json","r") as jsonfile:
jsonfile = json.load(jsonfile)
key = "0"
index = int(input("which index u want to remove: "))
with open("main.json","w") as f:
if key in jsonfile:
#jsonfile[key].append(str(index))
del jsonfile[key][index]
json.dump(jsonfile,f,indent=3)
在 replit.com 上工作,我知道,因为那是我使用的。
【讨论】:
问题是 r+ 附加并且不是最干净的选项。【参考方案2】:将“r+”改成“w”重新写入整个文件。
with open("main.json","w") as f:
if key in jsonfile:
#jsonfile[key].append(str(index))
del jsonfile[key][index]
json.dump(jsonfile,f,indent=3)
【讨论】:
【参考方案3】:问题在于保存文件。首先,使用"w"
而不是"r+"
,因为您没有在阅读。其次,要保存它,只需使用:
f.write(json.dumps(jsonfile))
见:Delete an element in a JSON object
【讨论】:
好的让我试试谢谢以上是关于为啥在replit中删除列表时json会出错的主要内容,如果未能解决你的问题,请参考以下文章
当我所做的只是一个列表时,为啥 Hibernate 会删除我的集合条目?
Spotify API:将曲目添加到播放列表:解析 JSON 时出错