python - json.dump 时如何显式设置回车?

标签 python json linux python-3.x carriage-return

我的 python 脚本生成 json 文件。而且我必须支持在 windows 和 linux 上工作的这个 python 文件。问题是 Windows 和 Linux 上的回车不同。当我在 Windows 上运行这段代码时,它输出 CRLF json。当我在 Linux 上运行它时,它会输出 LF json。

那么在python3.5中做json dump时如何显式设置回车呢?我可以

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

最佳答案

如果您坚持一致的 CRLF 行为(JSON 规范要求解析器同时处理这两者,但在某些纯文本阅读器(如记事本)中使用一致的 CRLF 可能更容易打开它),解决方案在 the open function 中。 ,而不是 json 模块。

只需将newline='\r\n'传给open,它就会翻译json写的任何\n \r\n 在所有系统上无缝转换,而不是转换为 os.linesep 的默认行为(即 \r\n 在 Windows 上和 \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)

关于python - json.dump 时如何显式设置回车?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41842875/

相关文章:

python - 使用 Pod 和 Jupyterlab 检索 EKS secret

php - 如何处理 pcntl_fork() : Error 35?

python 中的curl --interface 等价物

linux - bash 脚本中的 [...] 代表什么?

python - 我如何使用 pyclustering 来实现 kmedoids?

python - 在 python 而不是 shell 中使用命令行参数

python - 结合卷积神经网络

java - 在 java 中使用 gson 以 pretty-print 格式创建 json 文件 I/O?

php - 如何处理可能是数组或值的 JSON 输出

c - 虚拟区域到页面