YAML 学习笔记 YAML_FLOW_MAPPING_STYLE YAML_ANY_MAPPING_STYLE

YAML 学习笔记

 2016-10-15 |  learn |  11|

 643

YAML: YAML Ain’t Markup Language.

简介

基本语法规则如下:

  • 大小写敏感
  • 使用缩进表示层级关系
  • 缩进时不允许使用tab键,只允许使用空格
  • 缩进的空格数量不重要,只要相同层级的元素左侧对齐即可
  • #开启行注释

YAML支持的数据结构有三种:

  • 对象:键值对的集合
  • 数组:一组按次序排列的值
  • 标量(scalars):单个的、不可再分的值

下面我们主要参考YAML.pdf第二章的内容展开。

Collections

YAML的块集合(block collections)用缩进表示作用域,每一个实体都单独一行。块数组(block sequence)用-标识每一个实体,块映射(mapping)用:来标识每一个键值对。
Block Collections

YAML也有流格式(flow style)。此时就需要用特殊的字符来标识作用域了。在flow style格式下,流数组(flow sequence)中每个元素之间要用,分隔,之外需要用[/]来声明序列的范围;流映射(flow mapping)则使用{/}来标识范围。
Flow Collections

Structures

YAML使用---来指示文档中某一指令的开始,用...来指示文档中某一指令的结束。
Document Structures

文档中的指代标记,如下规定,&用来声明并标识某个实体,用*来指代该实体:
Document Object Ref

[TODO]: ?

Scalars

多行字符串时,使用|将保留换行符,>将把换行符置换为空格,除非它后面跟着一个空行或者缩进更多的行。
newline

单引号和双引号都可以使用,双引号不会对特殊字符转义,之外字符串中所有的换行符都会默认被换为空格。
newline in flow-string

Tags

YAML中默认支持如下几种类型的数据:
tags

YAML中使用!!来进行强制转换:
explicit tags

Full Length Example

这两个例子都来自YAML.pdf中,第一个例子是一个关于发票的,第二个则是关于一个日志文件的。

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

 

--- !<tag:clarkevans.com,2002:invoice>

invoice: 34843

date : 2001-01-23

bill-to: &id001

given : Chris

family : Dumars

address:

lines: |

458 Walkman Dr.

Suite #292

city : Royal Oak

state : MI

postal : 48046

ship-to: *id001

product:

- sku : BL394D

quantity : 4

description: Basketball

price : 450.00

- sku : BL4438H

quantity : 1

description: Super Hoop

price : 2392.00

tax : 251.42

total: 4443.52

comments:

Late afternoon is best.

Backup contact is Nancy.

Billsmer @ 338-4338.

 

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

 

---

Time: 2001-11-23 15:01:42 -5

User: ed

Warning:

This is an error message

for the log file

---

Time: 2001-11-23 15:02:31 -5

User: ed

Warning:

A slightly different error

message.

---

Date: 2001-11-23 15:03:17 -5

User: ed

Fatal:

Unknown variable "bar"

Stack:

- file: TopClass.py

line: 23

code: |

x = MoreObject("345\n")

- file: MoreClass.py

line: 58

code: |-

foo = bar

参考资料

YAML 语言教程 - 阮一峰的网络日志
YAML Ain’t Markup Language - 官方文档
YAML.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值