python - 多次转储到 JSON 时删除多余的方括号
问题描述
每次我将字典转储到 JSON 文件中时,都会添加一对方括号,我不知道如何避免。
我使用“尝试”写入现有的 JSON 文件(出现问题的地方),除了 JSONDecodeError 写入空的 JSON 文件。代码如下:
allgrades = []
[...]
currentgrades = {f"name": students_name,
"grade": students_grade,
"date": date.strftime("%Y-%m-%d %H:%M:%S")
}
allgrades.append(currentgrades)
# Write json file
with open("grades.json", "r") as infile:
try:
grades = json.load(infile)
infile.close()
grades.append(allgrades)
with open("grades.json", "w") as outfile:
json.dump(grades, outfile)
except JSONDecodeError:
with open("grades.json", "w") as outfile:
json.dump(allgrades, outfile)
使用 1 个导出的 dict 运行 py 两次后的 JSON 文件如下所示:
[{"name": "person1", "grade": "4", "date": "2021-02-20 10:42:01"}, [{"name": "person2", "grade": "4", "date": "2021-02-20 10:52:52"}]]
有没有一种方法可以得到一个只被一对方括号包围的 JSON 文件,无论我添加到 JSON 多少次?IE
[{"name": "person1", "grade": "4", "date": "2021-02-20 10:42:01"}, {"name": "person2", "grade": "4", "date": "2021-02-20 10:52:52"}]
解决方案
grades.append(allgrades)
allgrades
是您要附加到的grades
列表 - 另一个列表。这将创建一个嵌套列表,这是额外]
内容的来源。
您想要的是用新列表扩展现有列表:
grades.extend(allgrades)
它将所有条目添加allgrades
到grades
- 没有任何嵌套。
推荐阅读
- ios14 - 在 iOS 14 中,当权限为“选定的照片”时,从图库中选择图像时,图像选择器不显示图像
- list - haskell 列表中的第二大元素
- regex - 如何在第 n 个出现配置单元之前进行 regexp_extract
- java - 如何在数组中打印选定的名称?
- python - 将多维数组的字符串转换为numpy数组
- ios - AFnetworking 3 或 4 GET ResponseObject 如何拥有 responseString 和 ResponseData
- r - 使用登录数据的滞后日期计算登录之间的时间
- javascript - 移动设备浏览器上的输入元素点击行为与 Chrome 设备呈现不同
- html - 使用css网格垂直而不是水平对齐元素
- c - &foo->bar 和 foo->bar 的区别