我的python脚本生成json文件。我必须支持在windows和linux上运行的python文件。问题是windows和linux上的差异回车。当我在windows上运行这段代码时,它会输出CRLF json。当我在linux上运行它时,它会输出LF。
那么,在python3.5中执行json转储时,如何显式地设置回车?我不能
import json
fpath = "hoge.json"
data = {"AGE": 12, "HOGE": [{"GUA": 3}]}
with open(fpath, 'wt', encoding="utf-8") as outfile:
json.dump(data, outfile, indent=4, sort_keys=True, ensure_ascii=False)http://docs.python.jp/3/library/json.html
发布于 2017-01-25 05:18:58
如果您坚持一致的CRLF行为( JSON规范要求解析器处理这两种行为,但在某些纯文本阅读器(如记事本)中使用一致的CRLF打开它可能更容易),解决方案是在 function中,而不是在json模块中。
只需将newline='\r\n'传递给open,它将在所有系统上无缝地将json编写的任何\n转换为\r\n,而不是将转换为os.linesep的默认行为(即Windows上的\r\n和大多数其他OSes上的\n ):
with open(fpath, 'w', encoding="utf-8", newline='\r\n') as outfile:
json.dump(data, outfile, indent=4, sort_keys=True, ensure_ascii=False)发布于 2017-01-25 04:58:05
行尾是json规范中的空白(https://www.rfc-editor.org/rfc/rfc7159底部的第2节):
在这六个结构字符中的任何一个之前或之后都允许使用不重要的空格。 ws = *( %x20 /;空格%x09 /;水平制表符%x0A /;线路馈送或新线路%x0D );载运返回
这意味着每个读者都必须同时处理CR和LF才能符合要求。
https://stackoverflow.com/questions/41842875
复制相似问题