我有一些对象,我想变成yaml,唯一的事情是我需要能够把“!anything”没有引号
当我试着用pyyaml时,我最终得到了'!我的yaml文件里有任何东西
我已经尝试过使用ruamel.yaml PreservedScalarString和literalscalString。这是一种工作方式,但不是我需要的工作方式。问题是我最终得到了yaml,看起来是这样的:
10.1.1.16:
text: '1470814.27'
confidence: |-
!anything
但是我不需要这个|-
符号
我的目标是让yaml像这样:
10.1.1.16:
text: '1470814.27'
confidence: !anything
有什么办法可以做到吗
与@flix comment相反,在YAML中,不需要在标记后面加单引号或双引号(或块标量)。您可以尝试Oren Ben Kiki的reference parser(以编程方式从YAML规范派生)来确认您的预期输出是有效的YAML
在Python中,空内容通常作为
None
加载(由过时的PyYAML和ruamel.yaml加载)。带标签的空内容当然只能指示特定实例的存在,而没有任何值指示ruamel.yaml完全可以往返于您的预期输出:
给出:
您可以生成一个只转储标记的对象,而不必从头开始添加值(就像解析器所做的那样),但是如果您不想深入了解细节,您可以加载标记的对象并将其添加到数据结构中:
您可以在PyYAML中得到完全相同的结果,并且不使用引号,但这更复杂
要转储自定义标记,需要定义一个类型并为该类型注册一个representer。下面是如何对标量执行此操作:
这散发出
请注意标记后面的
''
,这是标记的标量(不,您无法摆脱它)。您也可以标记集合,但需要相应地使用represent_sequence
或represent_mapping
相关问题 更多 >
编程相关推荐