PythonでYAMLファイルを解析し、データにアクセスしますか?


83

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

私は、例えば、YAMLファイルを解析する方法についての説明に遭遇してきた、PyYAMLとチュートリアル、「どのように私はPythonでYAMLファイルを解析することができます」、「オブジェクトにPythonの辞書を変換する?」、しかし私は見つかっていないことです解析されたYAMLファイルからデータにアクセスする方法の簡単な例。

次のようなYAMLファイルがあるとします。

 treeroot:
     branch1: branch1 text
     branch2: branch2 text

テキスト「branch1text」にアクセスするにはどうすればよいですか?

YAML解析とPython?」は解決策を提供しますが、より複雑なYAMLファイルからデータにアクセスする際に問題が発生しました。そして、解析されたYAMLファイルからデータにアクセスする標準的な方法があるかどうか疑問に思っています。おそらく「ツリーの反復」や「elementpath」表記に似ているか、XMLファイルを解析するときに使用されるものですか?


回答:


151

PyYAMLのyaml.load()関数はYAMLドキュメントをネイティブPythonデータ構造に解析するため、キーまたはインデックスでアイテムにアクセスできます。リンクした質問の例を使用すると、次のようになります。

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

アクセスbranch1 textするには、次を使用します。

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

YAMLドキュメントでは、branch1キーの値がキーの下にあるためtreerootです。


3
「TypeError:文字列インデックスはstrではなく整数でなければなりません」というメッセージが表示されます。インデックスに文字列を使用できないようです。
sattu 2016

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

:ではなく「20 labelsize」:私はキーと値、すなわち「20 labelsize」の間にスペースがないため@sattu私は、同じエラーが発生しました
mateuszb
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.