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