2015-11-03 1 views
4

La bibliothèque yaml en python n'est pas capable de détecter les clés dupliquées. Ceci est un bug qui has been reported years ago et il n'y a pas encore de solution.Analyser Yaml en Python: Détecter les clés dupliquées

Je voudrais trouver une solution de contournement décent à ce problème. Comment plausible pourrait être de créer un regex qui renvoie toutes les clés? Ensuite, il serait assez facile de détecter ce problème.

Un maître de regex peut-il suggérer une regex capable d'extraire toutes les clés pour trouver des doublons?

exemple du fichier:

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

Leur mise en œuvre est nulle! Je suis d'accord avec vous, ils auraient dû ajouter l'option dans le constructeur. Avez-vous trouvé un moyen de vérifier les documents par programme? –

Répondre

4

L'outil de ligne de commande yamllint fait ce que vous besoin:

sudo pip install yamllint 

Plus précisément, il a une règle key-duplicates qui détecte les répétitions et les clés sur-écriture d'un autre:

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

(Il a beaucoup d'autres règles que vous pouvez activer/désactiver ou modifier.)