【发布时间】:2020-04-26 07:13:03
【问题描述】:
我想加载一个 JSON 文件,对其进行修改并保存结果,而不更改原始格式。 IE。像这样:
json_hash = JSON.parse(File.read('my.ipynb'))
[...] # modify
JSON.dump(json_hash, File.open('my.ipynb', 'wt'))
建议在this answer JSON.pretty_generate 中,但是在解析原始JSON 时如何检索pretty_generates 选项(例如object_nl)?
附:如果相关,JSON 文件是 Jupyter 笔记本。
【问题讨论】:
-
我怀疑
JSON对象在读取任意 JSON 文件时会为您计算pretty_generate选项。解析 JSON 并理解格式具有挑战性(不能保证一致:很多- 需要考虑标准情况)。为什么在任意情况下都需要相同的输出格式来匹配输入格式?您可以编写自己的解析器来跟踪源 JSON 以及在您开发结构时一切都在哪里,我想,然后当您修改它的一部分时,使用原始数据将其写回并替换更改的组件。 -
@lurker 谢谢,我想保留格式,否则 git commit 会有很大的差异,很难阅读和审查。编写自己的解析肯定会很有趣,但我不想重新发明轮子。
-
我明白了,是的,保持相同的格式会很好。一旦您使用
pretty_generate生成文件的第一个版本,我认为以相同方式生成的文件的后续更新将与先前版本产生明显的源差异。基本上对pretty_print生成的格式进行了标准化。 -
对,但有些笔记本是外部生成的,我无法控制它们的格式。
标签: python json ruby jupyter-notebook whitespace