强制 pyYAML 持续转储

Posted

技术标签:

【中文标题】强制 pyYAML 持续转储【英文标题】:forcing pyYAML to dump consistently 【发布时间】:2012-12-11 01:53:21 【问题描述】:
In [136]: a = [1,2,3,4,5]

In [137]: print yaml.dump(a)
[1, 2, 3, 4, 5]


In [138]: a = [1,2,3,4,5, [1,2,3]]

In [139]: print yaml.dump(a)
- 1
- 2
- 3
- 4
- 5
- [1, 2, 3]

为什么上面两个dumps的输出不一样?是否可以强制pyYAML 始终拆分list

【问题讨论】:

您希望输出是什么样的?这个 python 列表的相应转储在 yaml 格式中看起来很好。 【参考方案1】:

来自the documentation:

print yaml.dump(a, default_flow_style=False)

该值可以是TrueFalseNone。如果None 或未指定(即默认值),它会自动选择是使用内联还是块式输出。 False 从不使用内联,True 总是内联。

【讨论】:

是的。正如第一个常见问题解答条目所说:“默认情况下,PyYAML 根据是否具有嵌套集合来选择集合的样式。如果集合具有嵌套集合,它将被分配块样式。否则它将具有流样式。” 我也不能选择。我希望列表以[1,2,3] 的形式出现,并且字典以带有缩进的单独行出现。如何做到这一点?

以上是关于强制 pyYAML 持续转储的主要内容,如果未能解决你的问题,请参考以下文章

我可以在 yaml/pyyaml 中转储空白而不是 null 吗?

PyYaml - 使用特殊字符(即重音符号)转储 unicode

格式化 PyYAML 转储()输出

在 PyYAML 中保存/转储带有注释的 YAML 文件

为 PyYAML 转储的一部分指定样式

PyYAML 可以按非字母顺序转储 dict 项目吗?