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'u7070u84dd'} 

YAML转列表

# 定义数据读到Python里会是list
- 灰蓝
- 0
- Tester

输出结果:[u'u7070u84dd', 0, 'Tester'] 

YAML转列表、字典复合数据

# 定义读到Python里是个list里包含dict
  - name: 灰蓝
    age: 0
    job: Tester
  - name: James
    age: 30

输出结果:[{'job': 'Tester', 'age': 0, 'name': u'u7070u84dd'}, {'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'}

原文地址:https://www.cnblogs.com/jason2018524/p/13498613.html