3
的讓行號有什麼辦法來配置PyYAML,這樣我可以得到給定節點的行數?在處理輸入文件(例如配置文件)時,如果遇到語義錯誤,我想報告它所在的行號。PyYAML節點
我沒有看到任何在該文檔中立竿見影,但這種Mark
東西,這似乎涉及到行號。
的讓行號有什麼辦法來配置PyYAML,這樣我可以得到給定節點的行數?在處理輸入文件(例如配置文件)時,如果遇到語義錯誤,我想報告它所在的行號。PyYAML節點
我沒有看到任何在該文檔中立竿見影,但這種Mark
東西,這似乎涉及到行號。
我在ruamel.yaml製成的擴展包括一個選項以訪問集合的行和列(YAML:映射,序列,集合,odict/Python的字典,列表中,設置,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
將行和列信息從開始標記附加到其集合類型(如同評論和塊/ flowstyle信息一樣)
我正在尋找相同的東西,並且發現[此處的其他答案] [http: //stackoverflow.com/questions/13319067/parsing-yaml-return-with-line-number)。 – RocketR 2012-12-13 16:35:58