有什么方法可以配置 PyYAML,以便我可以获得与给定节点关联的行号?在处理输入文件(例如配置文件)时,如果遇到语义错误,我想报告它所在的行号。
我在文档中没有立即看到任何明显的内容,但是这Mark
件事似乎与行号有关。
我在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 开始计数。
您对标记“事物”是正确的,但是标准 PyYAML 加载器在构造 Python 对象时会丢弃它。ruamel.yaml.RoundTripLoader
将起始标记的行和列信息附加到它的集合类型(就像它对注释和块/流样式信息所做的那样。