JSON

yaml在python上的使用教程详解

字号+ 作者:H5之家 来源:H5之家 2017-07-21 16:05 我要评论( )

yaml在python上的使用估计很多的朋友不知道吧,下面小编来为各位介绍一篇yaml在python上的使用教程,希望文章对各位有用。YAML是一种容易人类阅读、适合表示程序

yaml在python上的使用估计很多的朋友不知道吧,下面小编来为各位介绍一篇yaml在python上的使用教程,希望文章对各位有用。

 


YAML是一种容易人类阅读、适合表示程序语言的数据结构、可用于不同程序间交换数据、支持泛型工具、支持串行处理、丰富的表达能力和可扩展性、易于使用的语言。YAML利用缩进或者是explicit indicatior(如{})来表示属性的嵌套,更为直观和simple。

一、YAML的格式

YAML的格式及特点如下:

YAML使用可打印的Unicode字元,可使用UTF-8或UTF-16。
使用空白字元为文件缩排来表示结构;不过不能使用跳格字元(TAB)。
注解由井字号( # )开始,可以出现在一行中的任何位置,而且范围只有一行(也就是一般所谓的单行注解)
每个清单成员以单行表示,并用短杠+空白( -   )起始。或使用方括号( [ ] ),并用逗号+空白( ,   )分开成员。
每个杂凑表的成员用冒号+空白( :   )分开键值和内容。或使用大括号( {   } ),并用逗号+空白( ,   )分开。
杂凑表的键值可以用问号 ( ? )起始,用来明确的表示多个词汇组成的键值。
字串平常并不使用引号,但必要的时候可以用双引号 ( " )或单引号 ( ' )框住。
使用双引号表示字串时,可用倒斜线( \ )开始的跳脱字元(这跟C语言类似)表示特殊字元。
区块的字串用缩排和修饰词(非必要)来和其他资料分隔,有新行保留(preserve)(使用符号 | )或新行折叠(flod)(使用符号 > )两种方式。
在单一档案中,可用连续三个连字号(---)区分多个档案。
另外,还有选择性的连续三个点号( ... )用来表示档案结尾。
重复的内容可使从参考标记星号 ( * )复制到锚点标记( & )。
指定格式可以使用两个惊叹号 ( !! ),后面接上名称。
档案中的单一文件可以使用指导指令,使用方法是百分比符号( % )。有两个指导指令在YAML1.1版中被定义:
 %YAML 指导指令,用来识别文件的YAML版本。
 %TAG 指导指令,被用在URI的字首标记。这个方法在标记节点的型态时相当有用。
YAML再使用逗号及冒号时,后面都必须接一个空白字元。

二、PyYAML的使用

1、安装

python下安装PyYAML模块可以使用YAML ,打开https://pypi.python.org/pypi/PyYAML下载,当前版本3.11 。pypi 站点上对该模块的描述如下:PyYAML features a complete YAML 1.1 parser, Unicode support, pickle support, capable extension API, and sensible error messages 。

可以连网的主机也可以通过pip install pyyaml 或easy_install pyymal 进行安装。

2、yaml.load与yaml.dump方法

该模块提供了一些方法,不过常用的方法只有两个yaml.load和yaml.dump ,以下是一个版本相关的yaml 格式文件

[root@361way yaml]# cat tree.yaml treeroot:     branch1:         name: Node 1         branch1-1:             name: Node 1-1     branch2:         name: Node 2         branch2-1:             name: Node 2-1

yaml.load方法:

# 脚本内容 [root@361way yaml]# cat load.py import yaml f = open('tree.yaml') dataMap = yaml.load(f) f.close() print dataMap # 执行结果如下 [root@361way yaml]# python load.py {'treeroot': {'branch2': {'branch2-1': {'name': 'Node 2-1'}, 'name': 'Node 2'}, 'branch1': {'branch1-1': {'name': 'Node 1-1'}, 'name': 'Node 1'}}}


yuml.dump方法:

这里还承接上面的脚本,调用里面的dataMap 数据,将其保存一直新的yaml 文件,如下:

# 代码如下: f = open('newtree.yaml', "w") yaml.dump(dataMap, f) f.close() #newtree.yaml 的结果如下 [root@361way yaml]# cat newtree.yaml treeroot:   branch1:     branch1-1: {name: Node 1-1}     name: Node 1   branch2:     branch2-1: {name: Node 2-1}     name: Node 2


除此之外,还有safe_load、safe_dump、 load_all 等主法,具体可以通过pydoc yaml 进行查看。

三、yaml、xml与json 
1、yaml 与xml

以下是同一内容,分别使用xml 语言标记与 yaml 语言标记:

# xml标记两个site <site>     <name>sina</name>     <url> </url> </site> <site>     <name>google</name>     <url></url> </site> # 使用yaml标记两个site --- site:     name: sina     url :   --- site:     name: google     url :  # 使用yaml标记两个site --- site: {name: sina, url:  } --- site: {name: google, url: }

从读取查看的角度来看,有没有发现yaml 相对xml 语言的优势。

2、yaml 与 json

准确的说json 应该算是yaml 标准下的一个字集,通过python语句可以很方面的在两者之间进行转换。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JSON.NET使用简单说明

    JSON.NET使用简单说明

    2017-07-18 13:07

  • 使用PHP直接在共享内存中存储数据集

    使用PHP直接在共享内存中存储数据集

    2017-07-17 18:03

  • fastjson 基本使用方法

    fastjson 基本使用方法

    2017-07-16 12:01

  • 用Python将excel文件导出成json

    用Python将excel文件导出成json

    2017-07-16 12:00

网友点评