3

我可能遗漏了一些明显的东西,但我在 Python 2 和 3 中有这种行为。我使用 pip 安装了 yaml(对于两个 python 版本):pip3 install pyyaml

只有第二条打印语句是有效的 YAML,只是因为我包含aa了 dict 的密钥:

>>> import yaml

>>> print(yaml.dump({'name': 'wut', 'age': 'wise'}))
{age: wise, name: wut}

>>> print(yaml.dump({'name': 'wut', 'age': 'wise', 'aa': []}))
aa: []
age: wise
name: wut

>>>
4

1 回答 1

2

我不太确定你的问题是什么,我认为这不是问题(我在 Windows 7 中的 Python 2.7.3 上的 PYYAML 中看到了相同的行为)。至少,在这两种情况下,转储操作的输出似乎都是正确的。

第一个 yaml.dump 似乎是有效的,即我可以加载该输出:

>>> print(yaml.load("{age: wise, name: wut}"))
{'name': 'wut', 'age': 'wise'}

如果您不喜欢转储操作的特定形式的输出,请参阅PYYAML 文档。PYYAML 根据您尝试转储的 YAML 内容自动选择流样式;在这种情况下,它似乎将列表视为嵌套集合并以不同的方式显示转储。

如果您希望第一个打印语句以与第二个相同的方式输出数据,您可以强制 PYYAML 不使用该流样式,如下所示:

>>> print(yaml.dump({'name': 'wut', 'age': 'wise'}, default_flow_style=False))
age: wise
name: wut
于 2013-07-22T20:42:46.957 回答