YAML常用的语法
YAML的基本规则
- 大小写敏感
- 使用缩进表示层级关系
- 缩进时不允许使用Tab,只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左对齐即可
- # 表示注释,从它开始到行尾都被忽略
YAML的基本数据类型
- 字符串:str: "Hello World!",如果字符串没有空格或特殊字符,不需要加引号,但如果其中有空格或特殊字符,则需要加引号
- 整型:int: 110
- 浮点型:float: 3.141
- 布尔型:boolean: true
- null:None: null
- 时间:time: 2016-09-22t11:43:30.20+08:00
- 日期:date: 2016-09-22
YAML字典格式
# yaml定义数据在Python里会是dict类型 name: 灰蓝 age: 0 job: Tester
输出结果:{'job': 'Tester', 'age': 0, 'name': u'\u7070\u84dd'}
YAML转列表
# 定义数据读到Python里会是list - 灰蓝 - 0 - Tester
输出结果:[u'\u7070\u84dd', 0, 'Tester']
YAML转列表、字典复合数据
# 定义读到Python里是个list里包含dict - name: 灰蓝 age: 0 job: Tester - name: James age: 30
输出结果:[{'job': 'Tester', 'age': 0, 'name': u'\u7070\u84dd'}, {'age': 30, 'name':'James'}]
YAML的&、*引用与被引用
# 定义变量并引用 name: &name Tom tester: *name
输出结果:{'name': 'Tom', 'tester': 'Tom'}
YAML的强制转换
# yaml是可以进行强制转换的,用!!实现 str: !!str 3.14 int: !!int "123"
输出结果:{'int': 123, 'str': '3.14'}
YAML分段
# 在同一个yaml文件中,可以用---来分段定义数据 --- name: James age: 20 --- name: Lily age: 19
# python中使用yaml.load_all()方法生成一个迭代器,然后通过for循环得到结果 import yaml ys = yaml.load_all(file('test.yaml', 'r')) for y in ys: print y
输出结果:
{'age': 20, 'name': 'James'}
{'age': 19, 'name': 'Lily'}