YAML
yaml应用:https://www.cnblogs.com/beautiful-code/p/6425020.html
一、yaml的介绍
一、简介
1、诞生
Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。
2、命名
YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写。
在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言)
3、功能
YAML语言的设定目标就是方便人类读写。它本质上是一种通用的数据串行化格式
- YAML的语法和其他高阶语言类似,并且可以简单表达清单、散列表,标量等资料形态、。
- 它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近)。
- 尽管它比较适合用来表达阶层式(hierarchical model)的数据结构,不过也有精致的语法可以表示关联性(relational model)的资料。
- 由于YAML使用空白字符和分行来分隔资料,使的他特别适合用grep、Python、Perl、Ruby操作。
- 其让人最容易上手的特色是巧妙避开各种封闭符号,如:引号、各种括号等,这些符号在嵌套结构中会变得复杂而难以辨认。
二、yaml基本语法规则
- 大小写敏感
- 使用缩进表示层次关系
- 缩进时不允许使用tab键,只允许使用空格
- 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
- “#”表示注释
- yaml文件以“---”作为文档的开始,以“...”作为文档的结束(这个不是强制要求)
三、yaml支持的数据结构有三种
- 对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
- 数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
- 纯量(scalars):单个的、不可再分的值
二、yaml支持的数据结构
一、对象:映射(mapping)/ 哈希(hashes) / 字典(dictionary)
对象的一组键值对,使用冒号结构表示。
- number
- float
二、数组
三、纯量
1、数值
整数、布尔值
2、布尔值
表示true的值
true, True, TRUE, yes, Yes, YES, on, On, ON, y, Y
表示false的值
false, False, FALSE, no, No, NO, off, Off, OFF, n, N
3、字符串
字符串默认不使用引号表示
单引号和双引号都可以使用,双引号不会对特殊字符转义。
单引号之中如果还有单引号,必须连续使用两个单引号转义。
字符串可以写成多行,从第二行开始,必须有一个单空格缩进。换行符会被转为空格。
多行字符串可以使用|保留换行符,也可以使用>折叠换行。
+表示保留文字块末尾的换行,-表示删除字符串末尾的换行。
字符串之中可以插入 HTML 标记。
4、引用
锚点&
和别名*
,可以用来引用。
&
用来建立锚点(defaults),<<
表示合并到当前数据,*
用来引用锚点。
三、高级YAML语法
!unsafe使用
变量值中保存的数据应被视为不安全的,防止不安全的字符子集和信息披露。
--- hosts: all vars: my_unsafe_variable: !unsafe 'unsafe value' tasks: ...
Playbooks 采用YMAL 语法结构,基本的YMAL 语法请参考
http://docs.ansible.com/YAMLSyntax.html
python利用pyyaml模块进行解析yaml语言
http://pyyaml.org/wiki/PyYAMLDocumentation
yaml格式在线检查
http://yaml-online-parser.appspot.com/
文章来源链接:https://www.jianshu.com/p/51a885f55a61