Yaml基础笔记
程序员文章站
2023-12-30 18:29:58
...
Wiki:
YAML(IPA: /ˈjæməl/,尾音类似camel骆驼)是一个可读性高,用来表达资料序列的格式。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822。Clark Evans在2001年在首次发表了这种语言[1] ,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。目前已经有数种编程语言或脚本语言支援(或者说解析)这种语言。
YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递回缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言),但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。
YAML是"YAML Ain't a Markup Language"(YAML不是一种置标语言)的递回缩写。在开发的这种语言时,YAML 的意思其实是:"Yet Another Markup Language"(仍是一种置标语言),但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。
最新版本为1.2,官方说明地址: http://www.yaml.org/spec/1.2/spec.html
使用方式:作为配置文件,数据交换格式,序列化对象存储,测试数据文件,
一个简单的示例:
--- 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. ...
基本技巧:
1,列表
使用- 表示,也就是用短杠+空白字符作为起始。
另外还有一种内置格式(inline format)可以选择──用方括号围住,并用逗号+空白区隔(类似JSON的语法)。比如:shopping: [milk, pumpkin pie, eggs, juice]
2,映射
--- # 區塊形式
person:
name: John Smith
age: 33
--- # 內置形式
person: {name: John Smith, age: 33}
3,重复元素
使用&id001先标记,然后后面用*id001指针引用
- # & 的作用,它表示一个“锚点标记”,其它节点可以使用“*”或“<<: *”来引用它的值
- node3: &node3
- a: 001
- b: 002
- # * 的作用,指node4的内容与node3完全一致
- node4:
- *node3
- # <<: * 的作用,指node5的内容包含但不完全相同于node3的值。
- node5:
- <<: *node3
- c: 003
#眼部雷射手術之標準程序
---
- step: &id001 #定義錨點標籤 &id001
instrument: Lasik 2000
pulseEnergy: 5.4
pulseDuration: 12
repetition: 1000
spotSize: 1mm
- step:
<<: *id001 # 合併鍵值:使用在錨點標籤定義的內容
spotSize: 2mm # 覆寫"spotSize"鍵值
- step:
<<: *id001 # 合併鍵值:使用在錨點標籤定義的內容
pulseEnergy: 500.0 # 覆寫鍵值
alert: > # 加入其他鍵值
warn patient of
audible pop
4,需要换行书写的字符串,两种方式:
再次强调,字串不需要包在引号之内。
保存新行(Newlines preserved)
poetry: | #譯者注:這是一首著名的五行民謠 There once was a man from Darjeeling #這裡曾有一個人來自大吉嶺 Who got on a bus bound for Ealing #他搭上一班往伊靈的公車 It said on the door #門上這麼說的 "Please don't spit on the floor" #"請勿在地上吐痰" So he carefully spat on the ceiling #所以他小心翼翼的吐在天花板上
根据设定,前方的引领空白符号(leading white space)必须对齐,以便和其他资料或是行为(如范例中的缩排)明显区分。
折叠新行(Newlines folded)
--- > Wrapped text #摺疊的文字 will be folded #將會被收 into a single #進單一一個 paragraph #段落 Blank lines denote #空白的行代表 paragraph breaks #段落之間的區隔
和保存新行不同的是,换行字元会被转换成空白字符,空行被转换成换行,而前导空白字符则会被自动消去。上面会变成两行。
5,混合使用:
阶层化的元素
于列表中使用映射
- {name: John Smith, age: 33} - name: Mary Smith age: 27
于映射中使用列表
men: [John Smith, Bill Jones] women: - Mary Smith - Susan Williams 本人博客已搬家,新地址为:http://www.pycoding.com/