【发布时间】:2017-04-17 20:38:02
【问题描述】:
我有代码可以将字典打印为 YAML:
import yaml
yaml.dump(
{
"Properties":
{
"ImageId": "!Ref AParameter"
}
},
new_template,
default_flow_style=False
)
这会创建:
Properties:
ImageId: '!Ref AParameter'
注意 ImageId 的值是如何在引号内的?我想不带引号打印。我如何使用 PyYAML 做到这一点?
【问题讨论】:
-
!在 YAML 中有特殊的含义。打印不带引号的值会改变 YAML 的含义。 -
也许吧。但是,我确实希望它是那样的。
-
@doles 如果您解释是什么让您“喜欢”不带引号的输出,那将会很有帮助。您是否了解加载您生成的输出的程序的含义并不完全清楚。我为您的确切输出提供了一个解决方案,并提供了加载输出所需的代码。
-
当然。我正在尝试以编程方式创建 AWS cloudformation 模板 (docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/…) 。在 AWS cloudformation 模板中,一个值可以是对模板中其他位置的另一个值的引用。这样的参考是通过使用我的问题中的语法进行编码的。因此,我希望能够打印出我所问的内容。我可以尝试其他形式,但是,这是规定的格式。
-
@doles 我没有找到
!Ref的示例(但后来我没有浏览所有页面)。如果 AWS 假设您手动编写 YAML 文件,那么包含!Ref当然是微不足道的,但是根据我的回答,从数据结构中转储它更加复杂。尽管使用符合标准的 YAML 解析器!Ref "AParameter"应该始终加载与!Ref AParameter相同的内容。
标签: python python-2.7 yaml pyyaml