Yaml - QLGQ/learning-python GitHub Wiki
Introduction
YAML是一种用来表达数据序列的编程语言,它的主要特点包括:可读性强、语法简单明了、支持丰富的语言解析库、通用性强等。ansible环境中配置文件都以YAML格式存在。
块序列描述
块序列就是将描述的元素序列到Python的列表(List)中。以下代码演示了YAML与Python的对应关系:
import yaml
obj = yaml.load(
"""
- Hesperiidae
- Papilionidae
- Apatelodidae
- Epiplemidae
""")
print obj
本例中引用“-”来分隔列表中的每个元素,运行结果如下:
['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae']
YAML也存在类似于Python块的概念,例如:
-
- Hesperiidae
- Papilionidae
- Apatelodidae
- Epiplemidae
-
- China
- USA
- Japan
对应的Python结果为:['Hesperiidae', 'Papilionidae', 'Apatelodidae', 'Epiplemidae'], ['China', 'USA', 'Japan'](/QLGQ/learning-python/wiki/'Hesperiidae',-'Papilionidae',-'Apatelodidae',-'Epiplemidae'],-['China',-'USA',-'Japan')
块映射描述
块映射就是将描述的元素序列到Python的字典(Dictionary)中,格式为“键(key):值(value)”,以下为YAML例子:
hero:
hp: 34
sp: 8
level: 4
orc:
hp: 12
sp: 0
level: 2
对应的Python结果为:{'hero': {'hp': 34, 'sp': 8, 'level': 4}, 'orc': {'hp': 12, 'sp': 0, 'level': 2}}
当然,YAML块序列与块映射是可以自由组合在一起的,它们之间可以互相嵌套,通过非常灵活的组合,可以帮助我们描述更加复杂的对象属性,例如:
- hero:
hp: 34
sp: 8
level: 4
- orc:
hp:
- 12
- 30
sp: 0
level: 2
对应的Python结果为:[{'hero': {'hp': 34, 'sp': 8, 'level': 4}}, {'orc': {'hp': [12, 30], 'sp': 0, 'level': 2}}]