YAML初识

YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。

YAML是 "YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写。

这么命名的方式,表示 YAML 强调的不是标记,而是数据本身。

YAML 参考了其他多种语言,包括:XML、C语言、Python、Perl 以及电子邮件格式 RFC2822。

YAML 发布与 2001 年,之前并不出名,现在逐渐开始流行。测试圈中,主要应用于自动化测试过程,用来进行数据驱动的数据存储载体。

基本语法规则(很接近 Python 的语法规则):

1.大小写敏感
2.使用缩进表示层级关系
3.不允许使用 TAB 键来缩进,只允许使用空格键来缩进
4.缩进的空格数量不重要
5.使用"#"来表示注释

支持的数据格式:

1.对象:键值对的集合,又称映射 (mapping) / 哈希(hashes)/ 字典 (dictionary)
2.数组: 一组按次序排列的值,又称序列 (sequence) / 列表 (list)
3.纯量 (scalars) :单个的,不可再分的值

处理 Yaml 格式的数据需要先下载pyyaml: pip install pyyaml

以下是 YAML 数据格式的示例:

使用 Python 相关语法作为对比。

对象

name: nemo

转换为Python字典格式为

{'name': 'nemo'}

YAML也支持另一种对象的写法,将所有的键值对写成一个行内对象

person: {name: nemo, sex: 男}

转换为Python字典格式为

{'person': {'name': 'nemo', 'sex': '男'}}

数组

一组连词线开头的行,构成一个数组

- cat
- dog
- fish

转换为Python

['cat', 'dog', 'fish']

也可以通过缩进空格来表示多维数组

- 
    - cat
    - dog
-
    - fish

转换为Python的列表

[ [ 'cat', 'dog' ], [ 'fish' ] ]

当然,也可以采用行内表示法

animal: ['dog', 'cat']

转换为Python

{ animal: [ 'dog', 'cat' ] }

纯量
纯量是最基本的、不可再分的值。 以下数据类型都是常见的纯量。

字符串
布尔值
整数
浮点数
null
时间
日期

纯量一般表示如下

    number: 15.01
    string: hi
    bool: true
    nothing: ~
    date: 2018-01-01
    time: 2018-01-01 12:12:12

转换为Python

    {
        'number': 15.01, 
        'string': 'hi',
        'bool': True, 
        'nothing': None, 
        'date': datetime.date(2018, 1, 1), 
        'time': datetime.datetime(2018, 1, 1, 12, 12, 12)
    }

yaml 文件通过 pyyaml 库转换后就是 Python 中对应的数据类型。直接进行操作即可,相较从 excel 中读取数据全部是字符串的方式来说,处理更方便。相对于 json 格式,可读性更高。




posted @ 2021-01-06 15:21  Rafe-X  阅读(37)  评论(0)    收藏  举报