1. ホーム
  2. python

[解決済み] Python で YAML ファイルをパースして、データにアクセスする?

2023-03-08 12:44:34

質問

私はYAMLに慣れておらず、YAMLファイルをパースし、パースされたYAMLからデータを使用/アクセスする方法を探しています。

私はYAMLファイルをパースする方法についての説明、たとえば、PyYAML チュートリアル , " Python で YAML ファイルをパースするには? ", " Pythonのdictをオブジェクトに変換しますか? "、しかし、私が見つけていないのは、パースされたYAMLファイルからデータにアクセスする方法についての簡単な例です。

次のようなYAMLファイルを持っていると仮定します。

 treeroot:
     branch1: branch1 text
     branch2: branch2 text

branch1 text"というテキストにアクセスするにはどうしたらよいですか?

"です。 YAML 構文解析と Python? "は解決策を提供しますが、より複雑なYAMLファイルからデータにアクセスすることに問題がありました。 そして、パースされた YAML ファイルからデータにアクセスする標準的な方法があるかどうか、おそらく " に似たようなものがあるのではないかと思っています。 ツリーイテレーション または " 要素パス とか、XMLファイルをパースするときに使われるような記法はありますか?

どのように解決するのですか?

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 キーの下にあります。