PyYAML获取节点的行号

时间:2012-03-02 08:18:44

标签: python pyyaml

有没有办法配置PyYAML以便我可以获得与给定节点关联的行号?在处理输入文件(例如配置文件)时,遇到语义错误,我想报告它所在的行号。

我没有在文档中看到任何明显的东西,但是有Mark这个似乎与行号相关的东西。

1 个答案:

答案 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将行标记中的行和列信息附加到其集合类型(与注释和块/流样式信息一样。