5 | YAML流样式、块样式、序列样式
- 1 流样式
- 2 块样式
- 3 序列样式
- 4 Flow Mappings
1 流样式
- 流样式将
YAML
数据表示为一个序列的流;
- 使用逗号分隔符来表示不同的元素;
- 使用方括号
([])
表示序列,使用大括号({})
表示映射。
- {name: xiaozhang, age: 33, address: {city: beijing, education: undergraduate course}}
- name: xiaozhang, age: 33, address: {city: beijing, education: undergraduate course}
- {name: xiaozhang, age: 33, city: beijing, education: undergraduate course}
2 块样式
- 每个语句块都以一个连字符
“-”
开头;
- 可以包含任意数量的子语句块;
- 每个子语句块都比父语句块多两个空格;
- 表示:
- 语句块:
- 子语句块1
- 子语句块2
- ...
- 语句块:
- 子语句块1
- 子语句块2
- ...
- name: 北京
code: 110000
districts:
- name: 东城区
code: 110101
- name: 西城区
code: 110102
- name: 朝阳区
code: 110105
- name: 丰台区
code: 110106
- name: 西安市
code: 610100
districts:
- name: 新城区
code: 610102
- name: 碑林区
code: 610103
- name: 莲湖区
code: 610104
- name: 灞桥区
code: 610111
- name: 未央区
code: 610112
- name: 雁塔区
code: 610113
- name: 阎良区
code: 610114
- name: 临潼区
code: 610115
- name: 长安区
code: 610116
- name: 高陵区
code: 610117
- name: 鄠邑区
code: 610118
- name: 蓝田县
code: 610122
- name: 周至县
code: 610124
[{'name': '北京', 'code': 110000, 'districts': [{'name': '东城区', 'code': 110101}, {'name': '西城区', 'code': 110102}, {'name': '朝阳区', 'code': 110105}, {'name': '丰台区', 'code': 110106}]}, {'name': '西安市', 'code': 610100, 'districts': [{'name': '新城区', 'code': 610102}, {'name': '碑林区', 'code': 610103}, {'name': '莲湖区', 'code': 610104}, {'name': '灞桥区', 'code': 610111}, {'name': '未央区', 'code': 610112}, {'name': '雁塔区', 'code': 610113}, {'name': '阎良区', 'code': 610114}, {'name': '临潼区', 'code': 610115}, {'name': '长安区', 'code': 610116}, {'name': '高陵区', 'code': 610117}, {'name': '鄠邑区', 'code': 610118}, {'name': '蓝田县', 'code': 610122}, {'name': '周至县', 'code': 610124}]}]
3 序列样式
- 块样式和流样式都可以用来表示序列;
- 块样式可以使序列更具可读性,而流样式可以在一行内表示整个序列;
- 序列样式可以方便地表示列表、数组和集合等数据结构。
4 Flow Mappings
Flow Mappings
是一种可能在一行甚至更少的空间内表示一个非常复杂的数据结构的方式;
- 这个特性可用于表达许多不同的数据结构,包括像哈希表,嵌套列表和更多;
- 通常用花括号来定义,每个键和值都用冒号隔开,并用逗号分隔;
- 示例:
{ name: xiaowang, age: 66, city: beijing }
{ name: xiaowang, age: 66, hobbies: [hiking, cooking, fishing], address: { city: beijing, education: undergraduate course } }
import yaml
data = {'name': 'xiaowang',
'age': 66,
'hobbies': ['hiking', 'cooking', 'fishing'],
'address': { 'city': 'beijing', 'education': 'undergraduate course' } }
data1 = yaml.dump(data, default_flow_style=True)
print(data1)
{address: {city: beijing, education: undergraduate course}, age: 66, hobbies: [hiking,
cooking, fishing], name: xiaowang}