• 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格式为: {'list':[1,2,3]}

    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
    1'
    str2: "test
    2"
    

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

    8- 类型转换

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

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

    json格式:

    {
      'is': '123', 
      'sf': 12.22, 
      'si': 222
    }
    
  • 相关阅读:
    OpenGL光栅化作业:【bresenham算法】GL_POINTS为基础画圆
    OpenGL光栅化作业:【bresenham算法】GL_POINTS为基础画线段
    GIT 4 (标签)
    用户组 vim yum
    Git (提交版本及版本回退)
    GIT服务器的搭建
    GIT 2 (工作区,暂存库,版本库对比)
    用户的管理
    文档搜索
    GIT 3 (推送与克隆 及 分支管理)
  • 原文地址:https://www.cnblogs.com/lemanlai/p/12511255.html
Copyright © 2020-2023  润新知