我有一个带有短字符串属性的对象,以及一个长多行字符串属性.我想将短字符串写为YAML引用的标量,将多行字符串写为文字标量:
my_obj.short = "Hello"
my_obj.long = "Line1\nLine2\nLine3"
Run Code Online (Sandbox Code Playgroud)
我希望YAML看起来像这样:
short: "Hello"
long: |
Line1
Line2
Line3
Run Code Online (Sandbox Code Playgroud)
我怎样才能指示PyYAML这样做?如果我调用yaml.dump(my_obj)它,它会产生一个类似dict的输出:
{long: 'line1
line2
line3
', short: Hello}
Run Code Online (Sandbox Code Playgroud)
(不确定为什么长的是这样的双倍间距...)
我可以指示PyYAML如何对待我的属性吗?我想影响顺序和风格.
在Python 2.6中有没有办法为JSON的sort_keys提供自定义键或cmp函数?
我有一个来自JSON的dicts列表,如下所示:
[
{
"key": "numberpuzzles1",
"url": "number-puzzle-i.html",
"title": "Number Puzzle I",
"category": "nestedloops",
"points": "60",
"n": "087"
},
{
"key": "gettingindividualdigits",
"url": "getting-individual-digits.html",
"title": "Getting Individual Digits",
"category": "nestedloops",
"points": "80",
"n": "088"
}
]
Run Code Online (Sandbox Code Playgroud)
...我已经存储到list变量中了assigndb.我希望能够加载JSON,修改它,并使用dumps(或其他)将其序列化,保持密钥的顺序完好无损.
到目前为止,我尝试过这样的事情:
ordering = {'key': 0, 'url': 1, 'title': 2, 'category': 3,
'flags': 4, 'points': 5, 'n': 6}
def key_func(k):
return ordering[k]
# renumber assignments sequentially
for (i, a) in enumerate(assigndb):
a["n"] = "%03d" % …Run Code Online (Sandbox Code Playgroud)