2011-11-14 6 views
60

私はYAMLを初めて使い、YAMLファイルを解析し、解析されたYAMLからデータを使用/アクセスする方法を探しています。PythonでYAMLファイルを解析し、そのデータにアクセスしますか?

私は「How can I parse a YAML file in Python」、「Convert Python dict to object?」、例えば、YAMLファイルを解析する方法について説明渡っPyYAMLとtutorialを来るが、私は見つかっていないことから、データにアクセスする方法について簡単な例できました解析されたYAMLファイル私は、テキスト「支社のテキスト」にアクセスするにはどうすればよい

treeroot: 
    branch1: branch1 text 
    branch2: branch2 text 

は私のようなYAMLファイルを持っていると仮定しますか?

"YAML parsing and Python?"は解決策を提供しますが、より複雑なYAMLファイルからデータにアクセスする際に問題がありました。そして、 "tree iteration"または "elementpath"という表記法やXMLファイルの解析時に使用されるものに似た、解析されたYAMLファイルからデータにアクセスする標準的な方法があるのだろうか?

+0

[PythonでYAMLファイルを解析するにはどうすればいいですか](https://stackoverflow.com/questions/1773805/how-can-i-parse-a-yaml-file-in-python) – fmsf

答えて

117

PyYAMLのyaml.load()関数は、YAMLドキュメントをネイティブのPythonデータ構造に解析するので、キーやインデックスで項目にアクセスできます。

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

をごYAML文書で、branch1キーの値がtreerootキーの下にある、ために:あなたが使用するbranch1 textアクセスするには

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

:リンクされた質問から例を使用。

+2

I get "TypeError:文字列インデックスは、strではなく整数でなければなりません"。インデックス用の文字列は使用できないようです。 – sattu

+0

文字列にアクセス(インデックス)しようとしている可能性があります。あなたはあまりにも深くなるかもしれません。あなたはすでにアクセスしようとしている要素にいますか? – Aphex

+0

@sattuキーと値の間にスペースがなかったので同じエラーが発生しました。つまり、 "labelsize:20"ではなく "labelsize:20" – mateuszb

関連する問題