Yaml文件内容—示例2:
从上述示例文件内容可以看到 Yaml 数据结构:
1). 对象:键值对的集合(简称 "映射或字典")
例如:family 和 address 这两个对象后面分别有对应的键值对集合。
2). 键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔
例如:
family 对象中的 key 为 name 与其对应的 value 值 Smile_Family 之间是使用空格分隔的。
address 对象中的 key 为 province 与其对应的 value 值 BeiJing 之间是使用空格分隔的。
3). 数组:一组按序排列的值(简称 "序列或列表"),数组前加有 “-” 符号,符号与值之间需用空格分隔
例如:
parents 中的 John 和 Jane
children 中的 Lily 和 Frank
4). 纯量(scalars):单个的、不可再分的值。例如:字符串、bool值、整数、浮点数、时间、日期、null等
None值可用null也可用 ~ 表示;
yaml文件内容如下:
Python解析输出为:
这个例子输出一个字典,其中value包括所有基本类型
Yaml文件内容如下:
Python解析输出为:
Yaml文件内容如下:
Python输出为:
如果字符串没有空格或特殊字符,不需要加引号,但如果其中有空格或特殊字符,则需要加引号。
这里要注意单引号和双引号的区别:
单引号中的特殊字符转到 Python 会被转义,也就是到最后是原样输出;
双引号不会被 Python 转义,到最后是输出了特殊字符;
Yaml文件内容如下:
Python输出:
前言
什么是YAML?
YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822。 Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。
YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递归缩写。 在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言),
格式及示例
数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。
示例:
PyYAML是一个Python的YAML解析器。
安装指令:pip install PyYaml
官网地址: 网站
示例1
示例2
报错
原因:yaml文档中用---分割,有多个文档,而读取的时候用了yaml.load()方法
【解决方案一】
将yaml.load()方法改成yaml.loadall()
注意:输出最后生成的datas和data的类型是:
<generator object load_all at 0x0000017829B079C8>
<class 'generator'>
【解决方案二】
将文档中的---去掉,变成document1
最后输出的:datas是字典 dict
第二个问题:
报错
【解决方案一】
将yaml.load()方法改成yaml.loadall()
【解决方案二】
load后面加上参数Loader=yaml.FullLoader
datas = yaml.load(file_data, Loader=yaml.FullLoader)