繁体   English   中英

使用 ruamel.yaml 检索文档头部的注释

[英]Retrieve comments at the head of the document using ruamel.yaml

是否有一种方法可以在加载 YAML 文档后使用 ruamel.yaml 检索文档头部的注释?

例如:

yaml_str = """\
# comment at head of document
date: 20210326 # comment about key-pair
"""

我知道如何检索date的评论:

from ruamel.yaml import YAML
yml = YAML(typ='rt')
data = yml.load(yaml_str)
comments = data.ca.items.get('date')

文档中的任何其他字段,但不是最初的评论。

目前没有获取此数据的方法。

您在开头找不到评论的原因是因为与所有其他评论相比,它的处理方式不同。 当在输入stream中看到其他评论时,有解析的数据节点可以附加评论,但是对于任何数据之前的开头的评论当然不是这种情况。

您可以检索这些评论,但您应该确保检查 ruamel.yaml 的版本,因为已宣布更改评论的附加方式

import ruamel.yaml

yaml_str = """\
# comment at head of document

# another one after empty line
date: 20210326 # comment about key-pair
"""


yaml = ruamel.yaml.YAML()
data = yaml.load(yaml_str)

if ruamel.yaml.version_info <= (0, 17, 0):
     comments = [x.value for x in data.ca.comment[1]]
else:
     raise NotImplementedError

print(comments)

这使:

['# comment at head of document\n\n', '# another one after empty line\n']

.ca.comment属性几乎肯定会在未来的版本中消失,因此您可以只使用 try-except。 并且将空行与前面的注释作为额外的换行符进行排序,格式也会发生变化,但在这种情况发生时很可能会获得稳定的访问方法(因此您不必多次升级代码)。

这就是我在检查对象时发现的方式:

>>> data.ca.comment[1][0].value
'# comment at head of document\n'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM