python - 无法避免 JSON 文件中的列表项以新行打印
问题描述
感谢 Oyono 和 chepner 解决了编辑问题!
我正在尝试将包含长列表的字典保存为 JSON 文件,而不将列表中的每个新项目都放在新行中。为了保存字典,我使用以下命令:
with open('file.json', 'w') as fp:
json.dump(coco, fp, indent=2)
该文件非常大,我无法在 Colab 中打开它。所以当我使用 VSC 打开它时,它会在单独的行中显示列表中的每个项目。当我尝试在 Colab 中仅打印字典的一小部分时,我将所有内容都放在一行中。
任何想法为什么会发生或如何避免它?这就是它在 VSC 中的样子:
"annotation": [
{
"segmentation": [
[
75.0,
74.5,
...(many more lines like this),
435.0,
435.5
]
],
"iscrowd": 0,
"category_id": 1,
"image_id": 43,
"id": 430,
"bbox": [
11.0,
280.0,
117.0,
156.0
],
"area": 9897,
}
],
]
}
这就是我希望它看起来的样子(并且无法判断文件之间是否存在实际差异)
{
"segmentation": [ [ 316.0, 171.5, 320.5, 168.0, 332.5, 153.0, 332.5, 149.0, 330.0, 146.5, 305.0, 134.5, 292.0, 125.5, 280.0, 120.5, 275.0, 116.5, 270.0, 115.5, 261.5, 130.0, 258.0, 133.5, 251.5, 136.0, 255.0, 140.5, 282.0, 153.5, 285.0, 156.5, 289.0, 156.5, 296.0, 159.5, 310.0, 170.5, 316.0, 171.5 ] ],
"iscrowd": 0,
"image_id": 5,
"category_id": 1,
"id": 5,
"bbox": [ 251.5, 115.5, 81.0, 56.0 ],
"area": 2075.0
},
解决方案
您必须indent=2
在调用中删除dump
:
with open('file.json', 'w') as fp:
json.dump(coco, fp)
该indent
关键字会将您的字典对象保存为漂亮打印的 json 对象,这意味着将每个列表项打印在单独的行中。您可以在 python 控制台中尝试此操作,以查看indent
对输出 json 的影响:
json.dumps({1: "a", "b": [1, 2]}, indent=2)
# will output: '{\n "1": "a",\n "b": [\n 1,\n 2\n ]\n}'
json.dumps({1: "a", "b": [1, 2]})
# will output: '{"1": "a", "b": [1, 2]}'
推荐阅读
- java - 为什么 Java segfaulting 中的 Z3 优化?
- r - R在哪里正确安装软件包?
- hook - 如何使用带有上下文的本机导航 wix 将数据从提供者共享到所有组件?
- sql - 将多个表中的行值合并到一个结果单元格中
- python - 如何删除 Pandas Dataframe 列中所有值的字符串的最后一个字符?
- react-native - 反应导航堆栈共享导航选项
- replace - 使用 xquery 替换元素中的部分数据
- python - Union 中 io.TextIOBase 的类型检查问题
- node.js - Npm 安装在 run-rs 上失败
- java - 有没有办法在 pom.xml 中排除额外的 AWS Maven 依赖项?