YAMLは便利: アンカーとエイリアス
PythonといえばINIファイルですよね?
Pythonって言ったらINIファイルじゃないですか。
13.2. ConfigParser — 設定ファイルの構文解析器 — Python 2.7ja1 documentation
組み込みでINIファイルのパーサーあるし。
でもINIファイルは入れ子構造とかを処理するときに都合が悪いですよね。
あと、データの型変換のルールとか自分で決めなきゃいけないし(getintとかgetfloatとか)。
リストとか辞書も表現できないし。
YAMLはすごい
YAMLはリストや辞書が定義できる上、アンカーとエイリアスが使えるところがすごい。
Rubyist Magazine - プログラマーのための YAML 入門 (初級編)
group: - &developers - foo - bar - &superusers - foo development.example.com: title: 開発環境 hostname: 127.0.0.1 members: *developers tags: development example.com: title: 本番環境 hostname: 127.0.0.1 members: *superusers tags: production
こういう風に書いておくと、development.example.comの'members'を取り出したとき['foo', 'bar']が取れます。
PyYAMLがアンカー・エイリアスをちゃんと処理してくれる
PythonでYAMLをパースするときにPyYAMLを使ってみたんですけど、
PyYAML 3.11 : Python Package Index
http://pyyaml.org/wiki/PyYAMLDocumentation#Aliases
リンクのドキュメントでもアンカー・エイリアスの例が書いてあります。
実際使ってみると、ちゃんと処理出来ました。