我正在使用ruamel.yaml为生成工具生成“配方”,该工具接受yaml的非标准超集。我得到了一些不良的输出,而我对于如何禁用此输出的搜索却干dry了。这是一个示例:
<center><button type="button">Generate!</button></center>
<center><h3 id="pin"><font face="Verdana" color="white">####</font></h3></center>
<script>
document.querySelector('button').addEventListener('click', () => {
const random = Math.random();
const pin = Math.round(random * 9999);
document.getElementById("pin").innerHTML = new String("0000" + pin).slice(-4);
});
</script>
这会自动引用无效的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))
我真的需要它不要在非标准行周围添加那些单引号。我不希望ruamel能够解析回去,而只是将其丢弃。
答案 0 :(得分:1)
您想要一个普通的标量,但是该标量内的#
(空格后跟一个哈希)可以解释为注释。因此,必须引用该标量才能正确表示。如果您使用:
(冒号+空格),也会发生同样的情况。
您唯一可以做的就是将值更改为'def _# [something]'
对普通标量的此限制为clearly documented in the specification。
(如果您打算这样做,当然可以使用ruamel.yaml
生成带注释的YAML。但是,您不能通过简单地在值中包含注释来做到这一点:这是不可能的以便将其与包含字符space + hash的实际值区分开来