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']}

YAML描述与Python的对应关系的更多相关文章

  1. 让你如绅士般基于描述编写 Python 命令行工具的开源项目:docopt

    作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...

  2. 线性规划之单纯形算法矩阵描述与python实现

    声明 本文为本人原创,转载请注明出处.本文仅发表在博客园,作者LightningStar. 问题描述 所有的线性规划问题都可以归约到标准型的问题,规约过程比较简单且已经超出本文范围,不再描述,可以参考 ...

  3. anconda + python 3.6安装(以前的anconda,anaconda和python版本对应关系)

    anconda + python 3.6安装 anaconda + python3.6安装安装老版本带python3.6的anaconda安装老版本带python3.6的anacondaanacond ...

  4. 13.python笔记之pyyaml模块

    Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...

  5. yaml在python中的应用简单整理

    #简单介绍============================================================== YAML使用寄主语言的数据类型,这在多种语言中流传的时候可能会引 ...

  6. python描述符理解

    Python中的描述符是一个相对底层的概念 descriptor Any object which defines the methods get(), set(), or delete(). Whe ...

  7. python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解

     1.前言 Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题 ...

  8. python描述符descriptor(二)

    python内置的描述符 python有些内置的描述符对象,property.staticmethod.classmethod,python实现如下: class Property(object): ...

  9. python yaml用法详解

    YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互.YAML类似于XML,但是语法比XML简单得多,对于转化成数组或可以hash的数据时是很简单有效的. Py ...

随机推荐

  1. 【转】每天一个linux命令(43):killall命令

    原文网址:http://www.cnblogs.com/peida/archive/2012/12/21/2827366.html Linux系统中的killall命令用于杀死指定名字的进程(kill ...

  2. ORACLE expdp/impdp详解

    ORCALE10G提供了新的导入导出工具,数据泵.Oracle官方对此的形容是:Oracle DataPump technology enables Very High-Speed movement ...

  3. mysql的一些 参数查询

    1 查询 事务 超时时间: SHOW GLOBAL VARIABLES LIKE 'innodb_lock_wait_timeout'; (默认innodb引擎事务的超时时间) 2 查询事务隔离级别 ...

  4. 把存储过程SELECT INTO到临时表

    在开发过程中,很多时候要把结果集存放到临时表中,常用的方法有两种. 一. SELECT INTO1. 使用select into会自动生成临时表,不需要事先创建12 select * into #te ...

  5. C#操作VFP的dbf数据库文件实例

    C#操作VFP的dbf数据库文件实例 新一篇: js获取网站跟路径 实例中分别使用Oledb和Odbc操作vfp数据库dbf文件,操作包括:读取,增删改. 已测试可直接使用,使用方法:下面代码分两个部 ...

  6. 通过 CeSi + Supervisor 可视化集中管理服务器节点进程

    通过 CeSi + Supervisor 可视化集中管理服务器节点进程 简介 Supervisor 的安装及基本使用 1. 安装 2. 基本使用  2.1 启动 supervisor 2.2 Supe ...

  7. 1.环境搭建-mysql+tomcat+myeclipse安装并配置

    一.安装mysql数据库并配置 下载地址:https://pan.baidu.com/s/1OJ3ggda7Cthl4GCxWKbTng 密码:sd6b 1.打开安装程序

  8. HTML5中对于网络是否断开的检测.很有意思哦

    //事件的封装 var EventUtil = { addHandler: function (element, type, handler) {//注册事件 if (element.addEvent ...

  9. vs2013错误解决方法

    1.cannot determine the location of the vs common tools folder 打开"VS2013开发人员命令提示后",上面提示&quo ...

  10. Chrome 鼠标左键-新标签打开

    改chrome设置 1.打开google搜索主页2.打开右下角Settings选项->Search Settings3.找到where results open选项4.把Open each se ...