【发布时间】:2014-03-18 23:22:35
【问题描述】:
我使用此代码将dict 漂亮地打印到 JSON 中:
import json
d = {'a': 'blah', 'b': 'foo', 'c': [1,2,3]}
print json.dumps(d, indent = 2, separators=(',', ': '))
输出:
{
"a": "blah",
"c": [
1,
2,
3
],
"b": "foo"
}
这有点太多了(每个列表元素都换行!)。
我应该使用哪种语法来做到这一点:
{
"a": "blah",
"c": [1, 2, 3],
"b": "foo"
}
改为?
【问题讨论】:
-
这并不完全是您问题的答案,但如果您只是在寻找一种易于使用的数据格式,您可以尝试 YAML。列表和字典等集合有两种语法,“块”(缩进显示嵌套)和“流”(括号完成这项工作)。默认情况下,PyYAML 的输出对不包含任何其他容器的列表和字典使用“流”语法,这听起来正是您想要的漂亮打印。
-
谢谢@Blckknght。 YAML 是否成熟/稳定/便携并且可能在未来几年/未来版本的 python 中可用?会成为标准吗? (抱歉所有这些问题;))
-
另一句话:我想避免转换成字符串,因为当我
load将我的 JSON 文件返回到dict时,如果它是一个字符串,我将无法再访问list(或者我需要将字符串解析为列表,但这样做很可惜......) -
有必须通过子类化
json.JSONEncoder来做到这一点,但我还没弄明白。 -
@Basj:我不是真正的 YAML 专家,但我的理解是它相当稳定和成熟,尽管不如 JSON 广泛使用。您可以在the official YAML website 找到它的标准,尽管Wikipedia page 似乎在提供概述方面要好一些。 JSON 是最新版本 YAML 的子集(显然很少遇到与早期 YAML 版本不兼容的问题)。
标签: python json dictionary python-2.x dump