2015-11-03 68 views
4

Python中的yaml庫無法檢測到重複密鑰。這是一個缺陷,has been reported years ago,目前還沒有修復。在Python中解析Yaml:檢測重複密鑰

我想找到一個體面的解決方法來解決這個問題。如何創建返回所有密鑰的regex?那麼檢測這個問題就很容易了。

任何正則表達式大師都可以提出一個正則表達式,它能夠提取所有鍵來查找重複項?

文件例如:

mykey1: 
    subkey1: value1 
    subkey2: value2 
    subkey3: 
     - value 3.1 
     - value 3.2 
mykey2: 
    subkey1: this is not duplicated 
    subkey5: value5 
    subkey5: duplicated! 
    subkey6: 
     subkey6.1: value6.1 
     subkey6.2: valye6.2 
+0

他們的實現糟透了!我同意你的看法,他們應該在構造函數中添加這個選項。你有沒有找到一種方法來驗證文件編程? –

回答

4

yamllint命令行工具做什麼你 想:

sudo pip install yamllint 

具體來說,它有一個規則key-duplicates檢測重複和鍵 過寫一個另:

$ yamllint test.yaml 
test.yaml 
    1:1  warning missing document start "---" (document-start) 
    10:5  error duplication of key "subkey5" in mapping (key-duplicates) 

(它有許多其他規則,你可以啓用/禁用或調整。)