2012-03-02 32 views
3

的讓行號有什麼辦法來配置PyYAML,這樣我可以得到給定節點的行數?在處理輸入文件(例如配置文件)時,如果遇到語義錯誤,我想報告它所在的行號。PyYAML節點

我沒有看到任何在該文檔中立竿見影,但這種Mark東西,這似乎涉及到行號。

+2

我正在尋找相同的東西,並且發現[此處的其他答案] [http: //stackoverflow.com/questions/13319067/parsing-yaml-return-with-line-number)。 – RocketR 2012-12-13 16:35:58

回答

0

我在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信息一樣)