web-dev-qa-db-fra.com

Analyser un fichier YAML en Python et accéder aux données?

Je suis nouveau sur YAML et je cherche des moyens d’analyser un fichier YAML et d’utiliser/d’accéder aux données du YAML analysé.

J'ai rencontré des explications sur la façon d'analyser le fichier YAML, par exemple PyYAML tutorial , " Comment puis-je analyser un fichier YAML en Python ", " Convert Python dict en object? ", mais ce que je n’ai pas trouvé est un exemple simple expliquant comment accéder aux données à partir du fichier YAML analysé.

Supposons que j'ai un fichier YAML tel que:

 treeroot:
     branch1: branch1 text
     branch2: branch2 text

Comment accéder au texte "texte branche1"?

" l'analyse YAML et Python? " fournit une solution, mais j'ai eu des problèmes pour accéder aux données à partir d'un fichier YAML plus complexe. Et, je me demande s’il existe un moyen standard d’accéder aux données à partir d’un fichier YAML analysé, par exemple, quelque chose de similaire à la notation " arborescence " ou " elementpath " ou quelque chose qui serait utilisé lors de l'analyse d'un fichier XML?

73
9monkeys

La fonction yaml.load() de PyYAML analysant les documents YAML dans des structures de données natives Python, vous pouvez uniquement accéder aux éléments par clé ou index. Utilisez l'exemple de la question que vous avez liée:

import yaml
with open('tree.yaml', 'r') as f:
    doc = yaml.load(f)

Accéder branch1 text vous utiliseriez:

txt = doc["treeroot"]["branch1"]
print txt
"branch1 text"

parce que, dans votre document YAML, la valeur du branch1 La clé est sous la clé treeroot.

138
Aphex