YAML with Python

YAML

YAML is a file format definition to represent structured data. Unlike JSON which is derived from JavaScript, YAML is independent (although, both are supported by a wide range languages). It is also well readable by humans.

Python

Example file example.yaml (see YAML homepage or Wikipedia for more)

name: YAML
note: "YAML Ain't Markup Language"
events:
 - {date: 2004-01-29, note: 'Version 1.0'}
 - {date: 2005-01-18, note: 'Version 1.1'}
 - {date: 2009-10-01, note: 'Version 1.2'}

Open this file and parse it into Python:

>>> import yaml
>>> f = open('examle.yaml')
>>> dataMap = safe_load(f)
>>> f.close()
>>> dataMap
{'note': "YAML Ain't Markup Language", 'name': 'YAML', 'events': [{'date':
datetime.date(2004, 1, 29), 'note': 'Version 1.0'}, {'date': datetime.date
(2005, 1, 18), 'note': 'Version 1.1'}, {'date': datetime.date(2009, 10, 1),
'note': 'Version 1.2'}]}
>>> dataMap['name']
'YAML'

This is a Python dictionary. To save a dictionary to a YAML file, use yaml.dump(dataMap, f) (f beeing a file stream opened for writing). The Source gives an example how to convert this dictionary into a Python object:

>>> class MyStruct:
...     def __init__(self, **entries):
...         self.__dict__.update(entries)
...
>>> y = MyStruct(**dataMap)
>>> y.name
'YAML'
>>> y.events
[{'date': datetime.date(2004, 1, 29), 'note': 'Version 1.0'}, {'date': datetime.date(2005, 1, 18),
'note': 'Version 1.1'}, {'date': datetime.date(2009, 10, 1), 'note': 'Version 1.2'}]
>>> y.events[2]
{'date': datetime.date(2009, 10, 1), 'note': 'Version 1.2'}
>>> y.events[2]['note']
'Version 1.2'

References

social