欢迎阅读我的笔记博客

52) Yaml文件详解

1- Yaml文件介绍

  • YAML全称其实是"YAML Ain't a Markup Language"(YAML不是一种标记语言)的递归缩写,所以它强调的是数据本身,而不是以标记为重点
  • YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。

2- Yaml文件的语法规则

  • #表示注释
  • 使用缩进表示层级关系
  • 大小写敏感
  • 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可【一般为两个空格】
  • 缩进时不允许使用Tab键,只允许使用空格

3- 支持的数据结构

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

4- 对象数据类型

  1. 键值对,使用冒号表示.
    city: shanghai
    json格式为:{'city':'shanghai'}
    键值对嵌套:
    city: { name: shanghai, location: southeast }
    json格式为: { 'city':{'name':'shanghai','location':'southeast'}}

  2. 列表
    number: [ 1,2,3]
    json格式为:

  3. 元组
    tuples: (1,2,3)
    json格式为: {'tuples':'(1,2,3)'}

注意:

  • 当赋值列表、键值对时,转换成json数据结构是可以直接当列表、字典使用
  • 当赋值元组时,转换后也是字符串
  • 最终输出的都是字典类型,可以通过key获取对应的值

5- 数组

案例:

list1:
  - 1
  - 2
  - 3

list2:
  - {key: value}
  - [1,2,3]
  - demo:
      - 1
      - 2
      - 3

list3:
  -
    - {a:b}
    - {c:d}
    - {e:f}

转换成json结构:

'list1':[1,2,3]
'list2':[
    {'key':'value'},
    [1,2,3]
    {
        'demo':[1,2,3]
    }
],
'list3':[
    [
        {'a':'b'},
        {'c':'d'},
        {'e':'f'}
    ]
]

6- 纯量

纯量是最基本的、不可再分的值;类似基本数据类型。

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

例如:

int: 12
float: 12.3
string: pets
bool: true
None: null
time: 2001-12-14t21:59:43.10-05:00
date: 2018-03-21

转换成json格式:

{
   'int': 12, 
   'float': 12.3, 
   'string': 'pets', 
   'bool': True, 
   'None': None, 
   'time': datetime.datetime(2001, 12, 14, 21, 59, 43, 100000, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400))), 
   'date': datetime.date(2018, 3, 21)
}

注意

  • 时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区
  • 日期必须使用ISO 8601格式,即yyyy-mm-dd
  • bool类型:true,True,false,False都可以
  • 可以用~表示null

7- 字符串

字符串默认不使用引号"" ''

基础写法:
str: 字符串
json格式:
{'str':'字符串'}

需要引号的情况:当字符串包含了空格or特殊字符
str_s: "字符串包含 空格&特殊字符!@#$%^&*()"
json格式:
{'str_s': '字符串包含 空格&特殊字符!@#$%^&*()'}

双引号不对""特殊字符转义

str1: 'test\n1'
str2: "test\n2"

json格式:
{'str1': 'test\\n1', 'str2': 'test\n2'}

8- 类型转换

用两个感叹号,强制转换数据类型

is: !!str 123
sf: !!float '12.22'
si: !!int '222'

json格式:

{
  'is': '123', 
  'sf': 12.22, 
  'si': 222
}
posted @ 2020-03-17 16:03  lemanlai  阅读(500)  评论(0编辑  收藏  举报