如何用 ruamel.yaml 抑制字符串的自动引用
How to suppress automatic quoting of strings with ruamel.yaml
我正在使用 ruamel.yaml 为构建工具生成 "recipes",它接受非标准的 yaml 超集。我得到了一些不需要的输出,我对如何禁用它的搜索已经枯竭。这是一个例子:
import ruamel.yaml as ryaml
test = ryaml.comments.CommentedMap(requirements={'host': ['abc', 'def # [something]']})
print(ryaml.dump(test, Dumper=ryaml.RoundTripDumper,
default_flow_style=False,
default_style="",
width=200))
这会自动引用无效的 yaml(老实说这是非常正常的默认行为):
requirements:
host:
- abc
- 'def # [something]'
我真的需要它不要在非标准行周围添加那些单引号。我不希望 ruamel 能够将它解析回来,只是转储它。
您想要一个普通标量,但该标量中的 #
(白色space 后跟一个散列)可以解释为注释。因此,需要引用该标量才能正确表示。如果您有 :
(冒号 + 白色 space),也会发生同样的情况。
您唯一能做的就是将值更改为例如'def _# [something]'
对普通标量的限制是 clearly documented in the specification。
(您当然可以使用 ruamel.yaml
生成注释 YAML,如果这是您的意图。但是您 不能 通过简单地在值中包含注释来做到这一点:无法将其与包含字符 space+hash)
的实际值区分开来
我正在使用 ruamel.yaml 为构建工具生成 "recipes",它接受非标准的 yaml 超集。我得到了一些不需要的输出,我对如何禁用它的搜索已经枯竭。这是一个例子:
import ruamel.yaml as ryaml
test = ryaml.comments.CommentedMap(requirements={'host': ['abc', 'def # [something]']})
print(ryaml.dump(test, Dumper=ryaml.RoundTripDumper,
default_flow_style=False,
default_style="",
width=200))
这会自动引用无效的 yaml(老实说这是非常正常的默认行为):
requirements:
host:
- abc
- 'def # [something]'
我真的需要它不要在非标准行周围添加那些单引号。我不希望 ruamel 能够将它解析回来,只是转储它。
您想要一个普通标量,但该标量中的 #
(白色space 后跟一个散列)可以解释为注释。因此,需要引用该标量才能正确表示。如果您有 :
(冒号 + 白色 space),也会发生同样的情况。
您唯一能做的就是将值更改为例如'def _# [something]'
对普通标量的限制是 clearly documented in the specification。
(您当然可以使用 ruamel.yaml
生成注释 YAML,如果这是您的意图。但是您 不能 通过简单地在值中包含注释来做到这一点:无法将其与包含字符 space+hash)