YAML 语法

本文详细介绍了YAML语言的特点,包括其大小写敏感性、使用空格缩进表示层级、禁止tab缩进、注释表示及数据结构如对象、数组和纯量的表示方式。此外,还讲解了数据嵌套、锚点与引用的用法,并提供了Python解析YAML文件的方法。同时,文中展示了YAML与JSON的转换示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一 简介

YAML是一种简洁的非标记语言

特点
  • 大小写敏感
  • 使用缩进表示层级关系
  • 禁止使用tab缩进,只能使用空格键
  • 缩进长度没有限制,只要元素对齐就表示这些元素属于一个层级
  • 使用#表示注释
  • 字符串可以不用引号标注
支持的数据结构

对象:键值对的集合,又称为映射 或者 哈希 或者 字典

# YAML表示
age : 12
name : huang
 
# 对应的Json表示
{'age':12,'name':'huang'}

数组: 一组按次序排列的值,又称为序列 或者 列表

使用连字符(-)表示:
# YAML表示
- a
- b
- 12
# 对应Json表示
['a','b',12]

纯量: 单个的。不可再分的值
冒号和短中横线后面的值必须先空一个位置,在添加值

二 数据嵌套

map嵌套map
hobby:
  java: 1
  python: 2
map嵌套list
hobby:
  - c
  - java
  - python
list嵌套list
-
  - java
  - python
  - c
- 
  - a
  - b 
  - c
list嵌套map
-
  id: 1
  name: zhangsan
- 
  age: 17
  sex: man

三 其他用法

1 锚点与引用
name: &a yaml
book: *a
books: 
   - java
   - *a
   - python
## 输出结果
# {'name': 'yaml', 'book': 'yaml', 'books': ['java', 'yaml', 'python']}
# YAML
human: &base # 添加名为 base 的锚点
    body: 1
    hair: 999
singer:
    <<: *base # 引用 base 锚点,实例化时会自动展开
    skill: sing # 添加额外的属性
programer:
    <<: *base # 引用 base 锚点,实例化时会自动展开
    hair: 6 # 覆写 base 中的属性
    skill: code # 添加额外的属性
 
// JSON
"human": { "body": 1, "hair": 999 },
"singer": { "body": 1, "hair": 999, "skill": "sing" },
"programer": { "body": 1, "hair": 6, "skill": "code" }
存量,数据类型约定

1 字符串使用双引号或者不适用双引号
2 布尔值 false 或者 true
3 数字

12 #整数 
014 # 八进制整数 
0xC #十六进制整数 
13.4 #浮点数 
1.2e+34 #指数 
.inf空值 #无穷大

4 空值:null 或者~表示

五 python解析yml文件

安装 第三方模块

pip install PyYaml
选择一种解析的方式 fp 为文件句柄
yaml.load(fp, Loader=yaml.SafeLoader)
yaml.safe_load(fp)
yaml.unsafe_load(fp)
yaml.full_load(fp)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值