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']}
YAML描述与Python的对应关系的更多相关文章
- 让你如绅士般基于描述编写 Python 命令行工具的开源项目:docopt
作者:HelloGitHub-Prodesire HelloGitHub 的<讲解开源项目>系列,项目地址:https://github.com/HelloGitHub-Team/Arti ...
- 线性规划之单纯形算法矩阵描述与python实现
声明 本文为本人原创,转载请注明出处.本文仅发表在博客园,作者LightningStar. 问题描述 所有的线性规划问题都可以归约到标准型的问题,规约过程比较简单且已经超出本文范围,不再描述,可以参考 ...
- anconda + python 3.6安装(以前的anconda,anaconda和python版本对应关系)
anconda + python 3.6安装 anaconda + python3.6安装安装老版本带python3.6的anaconda安装老版本带python3.6的anacondaanacond ...
- 13.python笔记之pyyaml模块
Date:2016-03-25 Title:13.Python笔记之Pyymal模块使用 Tags:Python Category:Python 博客地址:www.liuyao.me 作者:刘耀 YA ...
- yaml在python中的应用简单整理
#简单介绍============================================================== YAML使用寄主语言的数据类型,这在多种语言中流传的时候可能会引 ...
- python描述符理解
Python中的描述符是一个相对底层的概念 descriptor Any object which defines the methods get(), set(), or delete(). Whe ...
- python描述符(descriptor)、属性(property)、函数(类)装饰器(decorator )原理实例详解
1.前言 Python的描述符是接触到Python核心编程中一个比较难以理解的内容,自己在学习的过程中也遇到过很多的疑惑,通过google和阅读源码,现将自己的理解和心得记录下来,也为正在为了该问题 ...
- python描述符descriptor(二)
python内置的描述符 python有些内置的描述符对象,property.staticmethod.classmethod,python实现如下: class Property(object): ...
- python yaml用法详解
YAML是一种直观的能够被电脑识别的的数据序列化格式,容易被人类阅读,并且容易和脚本语言交互.YAML类似于XML,但是语法比XML简单得多,对于转化成数组或可以hash的数据时是很简单有效的. Py ...
随机推荐
- Java使用Unsafe接口操作数组Demo
public class unSafeArrayDemo { private static final sun.misc.Unsafe UNSAFE; private static final lon ...
- bzoj 4025 二分图——线段树分治+LCT
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=4025 线段树分治,用 LCT 维护链的长度即可.不过很慢. 正常(更快)的方法应该是线段树分 ...
- poj 2096 Collecting Bugs && ZOJ 3329 One Person Game && hdu 4035 Maze——期望DP
poj 2096 题目:http://poj.org/problem?id=2096 f[ i ][ j ] 表示收集了 i 个 n 的那个. j 个 s 的那个的期望步数. #include< ...
- Java Web Service 学习笔记
一.服务端 1. 创建Java工程 2. 创建接口HostipalServiceInterface package ws_server; import javax.jws.WebMethod; imp ...
- css学习日记
相对偏移 指定left top等属性就能够够完美控制一个元素的位置 如: position:relative; left:2px; 今天遇到一个很好玩的问题,当两个并排浮动框,当一个框的长度太大时就会 ...
- phper必知必会之数组指针(四)
数组指针 1.介绍几个数组指针的函数 current() - 返回数组中的当前单元 end() - 将数组的内部指针指向最后一个单元 prev() - 将数组的内部指针倒回一位 reset() - 将 ...
- 【python】单下划线与双下划线的区别
Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from moduleimport *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 以单下划线开头(_f ...
- 【C#】教你纯手工用C#实现SSH协议作为GIT服务端
SSH(Secure Shell)是一种工作在应用层和传输层上的安全协议,能在非安全通道上建立安全通道.提供身份认证.密钥更新.数据校验.通道复用等功能,同时具有良好的可扩展性.本文从SSH的架构开始 ...
- python-并发测试用例
以前看了虫师的并发,然后觉得以后如果遇上领导要求一个模块里的并发怎么办,然后就想到了下面的方法: 代码: 在原有的基础下再往casedir数组加模块三里面细分的对象.(这里可以封装成函数调用,工作需要 ...
- RDD之二:原理
RDD简介 在集群背后,有一个非常重要的分布式数据架构,即弹性分布式数据集(Resilient Distributed Dataset,RDD).RDD是Spark的最基本抽象,是对分布式内存的抽象使 ...