home changes contents help options

079:YAMLを解析する

PyYAML?

PyYAML? は Pure Python の YAML 解析モジュールです。 yaml.load 関数を使うことで YAML を Python オブジェクトに変換することができます。 逆に yaml.dump 関数を使うことで Python オブジェクトを YAML に変換することができます。

Sequence

YAML の Sequence は Python のリスト型となります。

>>> import yaml
>>> a = u"""\
... # お好みの映画、ブロック形式
... - Casablanca
... - Spellbound
... - Notorious
... """
>>> yaml.load(a)
['Casablanca', 'Spellbound', 'Notorious']
>>> b = u"""\
... # 買い物リスト、インライン形式、またはフロー形式
... [milk, bread, eggs]
... """
>>> yaml.load(b)
['milk', 'bread', 'eggs']

Mapping

YAML の Mapping は Python の辞書型となります。

>>> c = u"""\
... # ブロック
... name: John Smith
... age: 33
... """
>>> yaml.load(c)
{'age': 33, 'name': 'John Smith'}
>>> d = u"""\
... # インライン
... {name: John Smith, age: 33}
... """
>>> yaml.load(d)
{'age': 33, 'name': 'John Smith'}

Scaler Type

YAML と Python 間の型変換規則は次のようになっています。

YAML tag Python type
!!null None
!!bool bool
!!int int or long
!!float float
!!binary str
!!timestamp datetime.datetime
!!omap, !!pairs list of pairs
!!set set
!!str str or unicode
!!seq list
!!map dict

Python オブジェクトを YAML に

yaml.dump 関数を使います。

>>> b = ["milk", "bread", "eggs"]
>>> print yaml.dump(c)
[milk, bread, eggs]

PySyck?

Syck の Python バインディングである PySyck? というモジュールを使うこともできます。