YAML是一个可读性高,用来表达资料序列的格式。目前已经有数种编程语言或脚本语言支援(或者说解析)这种语言。
功能
可以简单表达清单、散列表,标量等资料形态。它使用空白符号缩排和大量依赖外观的特色,特别适合用来表达或编辑数据结构、各种设定档、倾印除错内容、文件大纲(例如:许多电子邮件标题格式和YAML非常接近),它特别适合用grep/Python/Perl/Ruby操作。
范例
---
receipt: Oz-Ware Purchase Invoice
date: 2007-08-06
customer:
given: Dorothy
family: Gale
items:
- part_no: A4786
descrip: Water Bucket (Filled)
price: 1.47
quantity: 4
- part_no: E1628
descrip: High Heeled "Ruby" Slippers
price: 100.27
quantity: 1
bill-to: &id001
street: |
123 Tornado Alley
Suite 16
city: East Westville
state: KS
ship-to: *id001
#追加
specialDelivery: >
Follow the Yellow Brick
Road to the Emerald City.
Pay no attention to the
man behind the curtain.
...
这个文件的的顶层由七个键值组成:其中一个键值"items",是两个元素构成的[[阵列]](或者[[清单]]),这清单中的两个元素同时也是包含了四个键值的杂凑表。文件中重复的部分用这个方法处理:使用锚点(&)和参考(*)标签將"bill-to"杂湊表的內容复制到"ship-to"杂湊表。
yaml的基本元件
YAML提供缩排/区块以及内置(inline)两种格式,来表示清单和杂凑表。
清单(阵列)——习惯上清单比较常用区块格式(block format)表示,也就是用短杠+空白字元作为起始。
--- # 最喜愛的电影
- Casablanca
- North by Northwest
- Notorious
另外还有一种内置格式(inline format)用方括号围住,并用逗号+空白区隔(类似JSON的语法)。
--- # 购物清单
[milk, pumpkin pie, eggs, juice]
杂凑表——键值和资料由冒号及空白字元分开。
--- # 区域形式
name: John Smith
age: 33
--- # 内置形式
{name: John Smith, age: 33}
清单中使用杂凑表
- {name: John Smith, age: 33}
- name: Mary Smith
age: 27
杂凑表中使用清单
men: [John Smith, Bill Jones]
women:
- Mary Smith
- Susan Williams
总结
1、注意在YAML中,字串不一定要用双引号表示。
2、在缩排中空白字元的数目并不是非常重要,只要相同阶层的元素左侧对齐就可以了(不过不能使用TAB字元)。
3、文件中重复的部分用这个方法处理:使用锚点(&)和参考(*)标签。
4、在一个档案中,可同时包含多个文件,并用3个"-"分隔。选择性的符号"..."可以用来表示档案结尾(在利用串流的通讯中,这非常有用,可以在不关闭串流的情況下,发送结束讯号)。
5、注解由井字号( # )开始,可以出现在一行中的任何位置,而且范围只有一行(也就是一般所谓的单行注解)。
6、每个清单成员以单行表示,并用短杠+空白( - )起始。或使用方括号( [ ] ),并用逗号+空白( , )分开成员。
7、每个杂凑表的成员用冒号+空白( : )分开键值和内容。或使用大括号( { } ),并用逗号+空白( , )分开。
8、字串平常并不使用引号,但必要的时候可以用双引号 ( " )或单引号 ( ' )框住。
应用
import yaml
f=open('test.yaml')
x=yaml.load(f)
python 解析YAML得到x的type是list或dict,使用相应的方法操作即可。
from:http://zh.wikipedia.org/wiki/YAML
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/29974949/viewspace-1609135/
,如需转载,请注明出处,否则将追究法律责任。