在 Python 中,我尝试读取 JSON 文件,更改单个值,然后对从
.dumps()
函数返回的字符串进行进一步处理。但是,调用 json.dumps()
后,返回的字符串已删除 /r
字符。
对于我的应用程序来说,保持原始格式非常重要。 json.dumps()的文档没有指定行结尾的方法。我看不出还有什么可能导致此删除。
我做错了什么吗,或者有没有办法维护行结尾,而不必强行输出(即替换、写入具有正确行结尾的新文件等)?
举个简单的例子:
with open('./test.json', 'rb') as test_file:
for line in test_file:
print(line)
# This prints lines that look like:
# b'{\r\n'
# b' "yay": "JSON!"\r\n'
# b'}'
test_file.seek(0,0)
json_object = json.load(test_file)
json_dump = json.dumps(json_object, indent=3)
print(repr(json_dump))
# This prints:
# '{\n "yay": "JSON!"\n}'
# ^\r removed ^\r removed
无需强行输出(即替换、写入具有正确行结尾的新文件等)?
工作量不大。
只需指定当您打开输出文件时想要使用的换行符:
with open("foo.json", "w", newline="\r\n") as f:
f.write('{\n "yay": "JSON!"\n}')
将输出写入流时,如果 newline 为
,则写入的任何None
字符都将转换为系统默认行分隔符'\n'
。如果 newline 是os.linesep
或''
,则不进行任何翻译。如果 newline 是任何其他合法值,则写入的任何'\n'
字符都将转换为给定字符串。'\n'