Python基础(八) yaml在python中的使用
yaml 通常用来存储数据,类似于json
YAML 简介
YAML(Yet Another Markup Language),一种直观的能够被电脑识别的数据序列化格式,是一个可读性高并且容易被人类阅读,容易和脚本语言交互,用来表达资料序列的编程语言。它参考了其它多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,是类似于标准通用标记语言的子集XML的数据描述语言,语法比XML简单很多。
由于YAML使用空白字符和分行来分隔资料,使得它特别适合用 grep、Python、Perl、Ruby 操作。
适用场景
- 脚本语言
由于实现简单,解析成本很低,YAML 特别适合在脚本语言中使用。列一下现有的语言实现:Ruby,Java,Perl,Python,PHP,OCaml,JavaScript,除了Java,其他都是脚本语言。
- 序列化
YAML 比较适合做序列化。因为它是宿主语言数据类型直转的。
- 配置文件
YAML 做配置文件也不错。写 YAML 要比写 XML 快得多(无需关注标签或引号),并且比 INI 文档功能更强。
由于兼容性问题,不同语言间的数据流转建议不要用 YAML。
语言比较
- XML
- 和 XML 相比,YAML 具有以下的优势
- 可读性好
- 和脚本语言的交互性好
- 使用实现语言的数据类型
- 可以基于流来处理
- 表达能力强,扩展性好
- XML 解析效率比较低,不过支持自定义的数据类型
- YAML类似于XML的数据描述语言,语法比XML简单很多,YAML试图用一种比XML更敏捷的方式,来完成XML所完成的任务。
- JSON
- JSON 的语法其实是 YAML 的子集,大部分的 JSON 文件都可以被 YAML 的剖析器剖析。虽然大部分的数据分层形式也可以使用类似 JSON 的格式,不过 YAML 并不建议这样使用,除非这样编写能让文件可读性增加,更重要的是,YAML 的许多扩展在 JSON 是找不到的,如:进阶资料形态、关系锚点、字串不需要引号、映射资料形态会储存键值的顺序等。
- INI
- INI文件由节、键、值组成。比较简单,原生的 SHELL 难以解析
YAML 语法
YAML 使用可打印的 Unicode 字符,可使用 UTF-8 和 UTF-16 编码。
- 使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目,但是同层元素一定左对齐,即前面空格数目相同(不能使用 Tab,各个系统 Tab对应的 Space 数目可能不同,导致层次混乱)
- ‘#’表示注释,只能单行注释,从#开始处到行尾
- 破折号后面跟一个空格(a dash and space)表示列表
- 用冒号和空格表示键值对 key: value
- 简单数据(scalars,标量数据)可以不使用引号括起来,包括字符串数据。用单引号或者双引号括起来的被当作字符串数据,在单引号或双引号中使用C风格的转义字符
yaml安装:
pip install pyyaml
yaml格式,使用缩进对格式进行要求,不允许使用tab,只能使用空格,来确定子项,同级,等等。
标签和值之间要有一个空格,要不然会当成一个字符串,不会当成是标签项。
userInfo:
name: yhleng
password: q123456 phone: 13718651887
加载yaml数据
path = os.path.join(sys.path[0],'test.yaml')
f = open(path)
x = yaml.load(f)
print x['userInfo']['name']
返回字典对象:
{'phone': 13718651887L, 'userInfo': {'password': 'q123456', 'name': 'yhleng'}}
输出:

Python基础(八) yaml在python中的使用的更多相关文章
- 『Python基础-1 』 编程语言Python的基础背景知识
#『Python基础-1 』 编程语言Python的基础背景知识 目录: 1.编程语言 1.1 什么是编程语言 1.2 编程语言的种类 1.3 常见的编程语言 1.4 编译型语言和解释型语言的对比 2 ...
- (Python基础教程之八)Python中的list操作
Python基础教程 在SublimeEditor中配置Python环境 Python代码中添加注释 Python中的变量的使用 Python中的数据类型 Python中的关键字 Python字符串操 ...
- Python基础:四、python的优缺点
python是一门动态解释性的强类型语言 python的优点: 1. python的定位是"优雅"."明确"."简单" python程序看上 ...
- Python基础:二、python介绍
Python崇尚优美.清晰.简单,是一个优秀并广泛使用的语言 python的创始人为GuidovanRossum.1989年圣诞节期间,Guido再阿姆斯特丹未来打发时间,决心开发一个新的脚本解释程序 ...
- python基础篇_001_初识Python
一.Python环境 windows环境安装Python步骤 .下载安装包:https://www.python.org/downloads/windows/ .安装:默认安装路径:C:\pytho ...
- python基础【2】——python数据类型之字符串
python数据类型-字符串 一. 字符串的表示方法(str) 作用: 记录文本信息 表示方法:' ' 单引号 " "双引号 ''' '''三单引号 ""&qu ...
- Python基础(1)python+Eclipse+pydev环境搭建
编辑器:Python 自带的 IDLE 简单快捷, 学习Python或者编写小型软件的时候.非常有用. 编辑器: Eclipse + pydev插件 1. Eclipse是写JAVA的 ...
- Python基础入门教程,Python学习路线图
给大家整理的这套python学习路线图,按照此教程一步步的学习来,肯定会对python有更深刻的认识.或许可以喜欢上python这个易学,精简,开源的语言.此套教程,不但有视频教程,还有源码分享,让大 ...
- Python基础:第一个Python程序(2)
1.Python Shell 1.1 Windows命令 (1)[开始]|[运行],输入cmd回车,进入Windows命令界面. (2)输入python,回车,进入Python Shell. 1.2 ...
随机推荐
- [转]理解Go语言中的nil
最近在油管上面看了一个视频:Understanding nil,挺有意思,这篇文章就对视频做一个归纳总结,代码示例都是来自于视频. nil是什么 相信写过Golang的程序员对下面一段代码是非常非常熟 ...
- C++ 智能指针七
/* 智能指针weak_ptr */ #include <iostream> #include <string> #include <memory> /* weak ...
- selenium.common.exceptions.UnexpectedAlertPresentException: Alert Text: None;Message: unexpected alert open: {Alert text : 您点击的频率过快!请稍后再试}
报错 Traceback (most recent call last): File "C:/myFiles/code/cnki/cnki_1/core/knavi.py", li ...
- 给你的app添加桌面widget
首先,什么是桌面widget,桌面widget是一种桌面插件,如下图: 这种类型的控件叫做widget,一般长按桌面会弹出一个界面让你选择控件,选择完了拖到桌面就能使用了. 下面我们为这个app来添加 ...
- C#中 Excel和其他文件类型的Content-Type/mime-type
C#中 Excel和其他文件类型的Content-Type/mime-type For BIFF .xls files application/vnd.ms-excel For Excel2007 a ...
- 复制id_rsa命令
pbcopy < ~/.ssh/id_rsa.pub https://aliasan-conf.taijiankong.cn/duotai/2T7b253i8.pac
- Android 最流行的吸顶效果的实现及代码
开始逐渐领略到ItemDecoration的美~ 今天让我 使用 ItemDecoration 来完成 可推动的悬浮导航栏的效果,最终实现的效果如下图: 具体实现步骤如下: 根据我前面的文章所讲的Re ...
- 内存(RAM或ROM)和FLASH存储的真正区别总结
转载自:http://blog.csdn.net/liangkaiyang/article/details/59556531.什么是内存 什么是内存呢?在计算机的组成结构中,有一个很重要的部分 ...
- linux下GPRS模块使用AT命令实现拨接电话,发中英文短信
开发板 :fl2440 cpu : s3c2440(arm9) 开发模块 :A7(GPRS/GPS) 远程登陆软件:PUTTY **** ...
- 远程连接服务器影像文件进行服务发布以及问题解决【the data item is inaccessible】
场景模拟: 本机安装有arcgis desktop以及arcgis server10.1,server的站点账号为arcgis. 需要发布影像服务并进行切片,使用的影像数据存放在远程服务器上,影像较大 ...