spa*_*iff 4 python yaml comments ruamel.yaml
我正在尝试使用 ruamel.yaml 创建数据结构,并希望在转储和/或再次加载之前添加注释。不幸的是,所有示例都首先使用往返转储程序加载一些字符串,或者使用不再存在的 API。
这就是我想要转储的内容:
test: asdf # Test Comment!
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
test: asdf # Test Comment!
Run Code Online (Sandbox Code Playgroud)
打印。
# Test Comment!test: asdf
Run Code Online (Sandbox Code Playgroud)
不知何故,注释位于值的前面而不是后面。我究竟做错了什么?
您可以尝试通过添加 来做到这一点CommentTokens
,但 start_mark 类型必须来自ruamel.yaml.error
。
insert
制作a CommentedMap
(这是在进行正常的往返加载时映射将被加载的内容),然后使用它的yaml_add_eol_comment
方法要容易得多:
import sys
import ruamel.yaml
insert = ruamel.yaml.comments.CommentedMap()
insert['test'] = 'asdf'
insert.yaml_add_eol_comment('Test Comment!', 'test', column=0)
yaml = ruamel.yaml.YAML()
# yaml.indent(mapping=4, sequence=4, offset=2)
yaml.dump(insert, sys.stdout)
Run Code Online (Sandbox Code Playgroud)
这使:
test: asdf # Test Comment!
Run Code Online (Sandbox Code Playgroud)
是column=0
可选的。如果你不指定起始列,你会在#
, 0 之前得到两个空格,试图将它一直推到前面,但当然键值对会妨碍。
#
您可以在为该方法指定的 EOL 注释中指定yaml_add_eol_comment
,但如果不存在,则会将其添加到前面。
如果连续行上的多个键后面有多个注释,并且希望注释对齐,则只需指定添加的第一个注释的列。
归档时间: |
|
查看次数: |
5158 次 |
最近记录: |