`

Yaml基础笔记

阅读更多
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"(仍是一种置标语言),但为了强调这种语言以数据做为中心,而不是以置标语言为重点,而用返璞词重新命名。

 

最新版本为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指针引用

 

  1. # & 的作用,它表示一个“锚点标记”,其它节点可以使用“*”或“<<: *”来引用它的值  
  2. node3: &node3  
  3.   a: 001  
  4.   b: 002  
  5.   
  6. # * 的作用,指node4的内容与node3完全一致  
  7. node4:  
  8.   *node3  
  9.     
  10. # <<: * 的作用,指node5的内容包含但不完全相同于node3的值。  
  11. node5:  
  12.   <<: *node3  
  13.   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/
分享到:
评论

相关推荐

    码尚 python+requests+pytest+allure+yaml+DDT+logs 接口自动化框-各分支源码总汇

    接口自动化框架(1-4)(5)(6)(7)(8)(终极版...6接口自动化框架封装之规范YAML测试用例&接口关联封装改进&基础路径封装改进 7热加载封装以及断言封装 8数据类型处理以及DDT数据驱动封装 9异常日志与BaseUrl封装

    Learn-azureml:将MSFT文档编译为一组可运行的管道和笔记本示例

    模型演练作为管道过程的教程基础结构总是在变化,因此这里是为了确保在编写大量代码之前先测试项目是否可以运行。 ( 最近一次在Azure ML SDK版本1.18.0上进行了测试。 确认此过程是端到端的。设置您需要在根目录中...

    python+requests+pytest 接口自动化框架(5)

    1、接口自动化统一请求封装 2、接口自动化接口关联封装 ... 3.1 confitest.yaml 写基础路径 笔记python+requests+pytest 接口自动化框架(五)链接:https://blog.csdn.net/weixin_41121249/article/details/124249043

    GitJournal:与Git集成的移动优先笔记

    它以标准的Markdown + YAML标头格式(可选)存储所有笔记。 注释存储在您选择的Git存储库中-GitHub / Gitlab / Custom-provider。 这意味着您可以轻松地自己托管或在众多之一中托管您的笔记。 产品特点 - 可以与...

    毕设新项目-基于Java开发的宠物医院管理系统源码+项目使用说明+sql数据库+开发笔记.zip

    毕设新项目-基于Java开发的宠物医院管理系统源码+项目使用说明+sql数据库+开发笔记.zip 一、环境与软件准备 &gt; 准备环境与相应的软件 ### 1.1 数据库 &gt; 建议MySQL的账号与密码都设置为"root" | 名称 | 版本 | ...

    javasnmp源码-development-note:开发笔记

    snmp源码软件开发笔记 请分叉并贡献。 编排、配置管理和 DevOps 工具: - Packer 是一种用于从单一源配置为多个平台创建相同机器映像的工具。 - 服务器自动化框架和应用 - Vagrant 是用于创建和配置虚拟开发环境的...

    markdown2pdf:将Markdown文件转换为PDF

    本模板适合学习笔记等场景: 用markdown写作,便捷 然后汇编成pdf,便于打印和阅读 模板文件在markdown2pdf中。 PS C:\Users\cheng\markdown2pdf&gt; tree /f C:. │ README.md │ └─markdown2pdf │ 01-引言.md │...

    基于kubernetes+docker+jenkins的DevOps实践

    那时候是在本就小的可怜的服务器上搭了一套jenkins+dockerregistry+docker见之前的笔记总的差不多这样:之后对kubernetes的接触后,就在之前的基础上加入kubernetes,其实也就是在服务器拉取镜像dockerrun的时候改变为...

    alps-unified:将ALPS API描述文档转换为API定义文档(OpenAPI,Proto等)的实用程序

    笔记 该实用程序基于此处的演示(和初始演示): : 用法 -ws:~$unified -h Usage: -f &lt;alpsfile&gt; -t &lt;format&gt; -o Options: --help Show help [boolean] --version Show version number [boolean] -f, --file

    certified-aws-developer-associate-notes:2021年AWS开发人员助理考试

    认证的AWS助理开发人员说明2021年AWS开发人员助理考试目录AWS基础知识AWS Deep Dive弹性豆茎CICD:持续集成和部署代码提交代码管道代码构建代码部署CloudFormation CloudWatch 整合与讯息SQS 社交网络运动学YAML AWS...

    mirrors-dotnet-format:预先提交的dotnetformat工具的镜像

    笔记这是库的镜像,以添加对支持。 请报告那里基础工具的任何问题! 要将其与预提交一起使用,请将其添加到您的.pre-commit-config.yaml文件中: repos :- repo : ...

    dakan

    作业的调度在IaC存储库或Airflow中的yaml文件中定义。 在GCP上,也可以在或定义作业 摄取 空气流动 前端 前端应用程序由一个以弹性搜索为后盾的搜索页面和多个独立的“查看器”应用程序组成。 目录中的每种类型的...

    asp.net知识库

    技术基础 New Folder 多样式星期名字转换 [Design, C#] .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则...

Global site tag (gtag.js) - Google Analytics