zoukankan      html  css  js  c++  java
  • YAML描述与Python的对应关系

    YAML是"YAML Ain't a Markup Language"的首字母缩写,其语法简单,结构通过空格来展示,(列表)项目使用"-"来代表,(字典)键值对使用":"分割

    YAML使用一个固定的缩进风格表示数据层级结构关系。需要每个缩进级别由空格组成。注意:不要使用tabs.

    最常见的是映射到Python中的列表(list)、字典(Dictionary)两种对象类型。

    一、Ansible相关

    1、块序列描述

    块序列就是将描述的元素序列到Python的列表(list)中。以下代码演示了YAML与Python的对应关系:

    import yaml

    obj=yaml.load(

    """

     - Hesperiidae

     - Papilionidae

     - Apatelodidae

     - Epiplemidae

    """)

    print obj

    本例中引用"-"来分隔表中的每个元素,运行结果如下:

    ['Hesperiidae','Papilionidae','Apatelodidae','Epiplemidae']

    YAML也存在类似于Python块的概念,例如:

    -

      - Hesperiidae

      - Papilionidae

      - Apatelodidae

      - Epiplemidae

    -

     - China

     - USA

     - Japan

    对应的Python结果为:

    [['Hesperiidae','Papilionidae','Apatelodidae','Epiplemidae'],[''China,'USA','Japan']]

    2、块映射描述

    块映射就是将描述的元素序列到Python的字典(Dictionary)中,格式为"键(key):值(value)",以下为YAML例子:

    hero:

      hp:34

      sp:8

      level:4

    orc:

      hp:12

      sp:0

      level:2

    对应的Python结果为:

    {'hero':{'hp':34,'sp':8,'level':4},'orc':{'hp':12,'sp':10,'level':2}}

    当然,YAML块序列与块映射是可以自由组合在一起的,它们之间可以相互嵌套,通过非常灵活的组合,可以帮助我们描述更加复杂的对象属性,例如:

    - hero:

        hp:34

        sp:8

        level:4

    - orc:

        hp:

          - 12

          - 30

        sp:0

        level:2

    对应的Python结果为:

    [{'hero':{'hp':34,'sp':8,'level':4}},{'orc':{'hp':[12,30],'sp':0,'level':2}}]

    二、Salt相关

    1、冒号  需要注意的是冒号后面都有一个空格

    字典的key在YAML中的表现形式是一个以冒号结尾的字符串:

    my_key:  my_value

    在Python中,命令将映射为:

    { 'my_key':  'my_value'}

    另一种选择是,value可以通过缩进与key联接。当然了也可以进行嵌套使用。

    my_key:

            my_value

    2、短横杠

    想要表示列表项,使用一个短横杠加一个空格 。

    - list_value_one

    - list_value_two

    - list_value_three

    列表可以作为一个键值对的value,这在salt中很常见,比如我们要一次性安装多个软件包:

    my_dictionary:

        - list_value_one

        - list_value_two

        - list_value_three

    在Python中,上面的代码将映射为:

    { 'my_dictionary': ['list_value_one', 'list_value_two', 'list_value_three']}

  • 相关阅读:
    Python 模块的安装与使用
    Python——list切片
    IPv4与IPv6数据报格式
    计算机网络——网络层
    大型网站技术
    mysql主从复制数据库
    Laravel-安装composer
    centos7 yum安装配置redis
    最新cenos执行service httpd restart 报错Failed to restart httpd.service: Unit not found.
    Memcache安装
  • 原文地址:https://www.cnblogs.com/wjoyxt/p/5015169.html
Copyright © 2011-2022 走看看