首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >YAML标记语言简明教程

YAML标记语言简明教程

原创
作者头像
zzh-dahai
修改2025-07-09 08:53:13
修改2025-07-09 08:53:13
3530
举报

以下是YAML的简易教程,涵盖核心语法、数据结构及实践技巧:

一、YAML基础概念

  1. 设计目标 YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,专注于简洁性和易读性,适用于配置文件(如Kubernetes、Docker Compose)和数据交换。
  2. 核心规则
    • 大小写敏感Keykey视为不同。
    • 缩进层级:仅使用空格(禁止Tab键),同层级元素左对齐(空格数无强制要求)。
    • 注释:以#开头,行尾结束。
    • 键值分隔:冒号后必须加空格(key: value)。

二、数据结构与语法

1. 对象(映射/字典)

表示键值对集合:

代码语言:javascript
复制
person:
  name: Alice
  age: 30

行内简写person: {name: Alice, age: 30}

2. 数组(序列/列表)

- 开头表示列表项:

代码语言:javascript
复制
fruits:
  - Apple
  - Banana

行内简写fruits: [Apple, Banana]

3. 复合结构

嵌套对象与数组:

代码语言:javascript
复制
company:
  name: TechCorp
  employees:
    - name: John
      role: Developer
    - name: Sarah
      role: Designer

对应JSON:

代码语言:javascript
复制
{
  "company": {
    "name": "TechCorp",
    "employees": [
      {"name": "John", "role": "Developer"},
      {"name": "Sarah", "role": "Designer"}
    ]
  }
}
```[5](@ref)[8](@ref)

#### 4. **纯量(基本类型)**
- **字符串**:默认无需引号,含特殊字符(如`:`, `#`)时需加引号。  
- **多行文本**:  
  `|`保留换行符:  
  ```yaml
  desc: |
    Line 1
    Line 2  # 输出"Line 1\nLine 2\n"

>折叠换行(转为空格):

代码语言:javascript
复制
desc: >
  Line 1
  Line 2  # 输出"Line 1 Line 2\n"
```[6](@ref)[8](@ref)  
- **其他类型**:  
- 布尔值:`true`/`false`(大小写不敏感)  
- 空值:`~`或留空  
- 时间/日期:ISO 8601格式(如`2025-07-09T14:30:00+08:00`)[6](@ref)[11](@ref)。

---

### 三、高级特性
#### 1. **锚点与别名**
避免重复定义:  
```yaml
defaults: &config  # 定义锚点
host: localhost
port: 8080

development:
<<: *config       # 引用锚点
database: dev_db

test:
<<: *config
database: test_db

等效于为developmenttest复用hostport值。

2. 强制类型转换

!!指定类型:

代码语言:javascript
复制
str_int: !!str 123   # 转为字符串"123"
str_bool: !!str true  # 转为字符串"true"
```[8](@ref)

---

### 四、Python操作YAML
1. **安装库**:  
   ```bash
   pip install pyyaml
  1. 读取YAML: import yaml with open('config.yml', 'r') as f: data = yaml.safe_load(f) # 返回字典/列表
  2. 写入YAML: config = {'app': {'name': 'MyApp', 'debug': True}} with open('output.yml', 'w') as f: yaml.dump(config, f) ```[1](@ref)[3](@ref)[4](@ref)

五、常见错误与技巧

  1. 缩进错误:混用Tab和空格会导致解析失败,统一使用空格(推荐2或4格)。
  2. 特殊字符处理:键名含空格或冒号时需加引号: "first name": "John" 'key:with:colon': 'value' ```[2](@ref)[7](@ref)。
  3. 多行字符串缩进:从第二行起每行需相同缩进。

六、应用场景

  • 配置文件:替代JSON/XML(如Kubernetes Pod定义)。
  • 数据交换:跨平台传递结构化数据。
  • 自动化脚本:结合Python管理配置(环境隔离、热加载)。

提示:使用在线工具(如YAML Validator)可实时校验语法。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、YAML基础概念
  • 二、数据结构与语法
    • 1. 对象(映射/字典)
    • 2. 数组(序列/列表)
    • 3. 复合结构
    • 2. 强制类型转换
  • 五、常见错误与技巧
  • 六、应用场景
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档