有没有办法配置PyYAML以便我可以获得与给定节点关联的行号?在处理输入文件(例如配置文件)时,遇到语义错误,我想报告它所在的行号。
我没有在文档中看到任何明显的东西,但是有Mark
这个似乎与行号相关的东西。
答案 0 :(得分:0)
我在ruamel.yaml中所做的扩展包括访问集合的行和列的选项(YAML:mapping,sequence,set,odict / Python dict,list,set,ordereddict):
import ruamel.yaml
data = ruamel.yaml.load("""
# example
- a
- e
- {x: 3}
- c
""", Loader=ruamel.yaml.RoundTripLoader)
assert data[2].lc.line == 3
assert data[2].lc.col == 2
行和列都从0开始计数。
你对Mark“事物”是正确的,但标准的PyYAML加载器在构造Python对象时将其丢弃。 ruamel.yaml.RoundTripLoader
将行标记中的行和列信息附加到其集合类型(与注释和块/流样式信息一样。