如何解决使用 ruamel.yaml 检索文档开头的注释
是否有一种方法可以在加载后使用 ruamel.yaml 检索 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')
或any other field in the document,但不是初始评论。
解决方法
目前没有获取这些数据的方法。
你找不到开头的评论的原因,是因为它是 与所有其他评论相比,处理方式不同。当在输入流中看到其他评论时,有 是解析可以附加注释的数据节点,但这当然不是 任何数据之前开头的注释的情况。
您可以检索这些评论,但您应该确保检查 ruamel.yaml 的版本,因为评论的附加方式发生了变化 have been announced
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']
.comment
的 .ca
属性在未来几乎肯定会消失
发布,所以你可以只使用 try-except。和空行的整理
前面的注释作为一个额外的换行符,也会改变格式,但会
最有可能在发生这种情况时获得稳定的访问方法(因此您应该
不必多次升级您的代码)。
这是我发现的检查对象的方式:
>>> data.ca.comment[1][0].value
'# comment at head of document\n'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。