[英]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.