ITPub博客

首页 > 应用开发 > IT综合 > yaml 格式及在python应用

yaml 格式及在python应用

原创 IT综合 作者:biggerl 时间:2015-04-28 16:59:46 0 删除 编辑
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/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: redis replication
下一篇: mysql复制原理
请登录后发表评论 登录
全部评论

注册时间:2014-10-24

  • 博文量
    39
  • 访问量
    96957