考虑一下,更新前json文件的内容是,
{"key1": "value A", "key2": "value B"}
我想在不使用 json.load() 实际打开 json 文件的情况下将 key1 更新为值 C。所以最终的输出应该是,
{"key1": "value C", "key2": "value B"}
我想要 mongoDB 中的 update() 之类的东西。是否可以通过任何图书馆?
最佳答案
这完全取决于任务的上下文。正如我在评论中所说,您可以使用 SAX 解析器而不是 DOM。它会阻止你在内存中构建巨大的模型。 SAX 解析器在事件(回调)驱动机制上工作。
另一种选择,如果您的 JSON 结构如所示的那样简单并且预计不会改变,您可以使用简单的正则表达式。下面的示例展示了这个想法,但要小心,它假设您的值始终采用 [\w\d\s]*
形式并且不包含引号和逗号。
import re
rx = r'\s*\"(\w\d+)\"\s*:\s*"([\w\d\s]*)"\s*'
with open('in.json') as inp:
src_text = inp.read().strip(' \t\r\n{}')
output = []
for pair in src_text.split(','):
m = re.match(rx, pair)
key = m.group(1)
val = m.group(2)
output.append('"{}": "{}"'.format(key, 'value C' if key == 'key1' else val))
with open('out.json', 'w') as outp:
outp.write('{' + ', '.join(output) + '}')
关于python - 如何在不在 python 中加载完整的 json 的情况下更新 json 文件中键的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53495772/