什么是YAML?学这一篇就够了
发布时间
阅读量:
阅读量
YAML (YAML Ain’t Markup Language) 语法规范及应用场景
YAML 是一种人类可读的数据序列化格式,常用于配置文件和数据交换。它旨在提供一种易于阅读和编写的格式,同时也易于机器解析和生成。下面是对 YAML 语法的基本介绍,以及如何使用 Python 对 YAML 文件进行读写和解析的指南。
YAML 语法规范
基本结构
- YAML 文档由一系列键值对组成,可以是简单的键值对,也可以是嵌套的结构。
- 键值对使用冒号和空格分隔,例如
key: value。 - 嵌套结构可以通过缩进来表示层次关系,例如:
key:
subkey: value
yaml
数据类型
- 标量 (Scalar):基本数据类型,如字符串、数字等。
age: 30
name: Alice
yaml
- 序列 (Sequence):类似于数组或列表。
hobbies:
- reading
- hiking
- coding
yaml
- 映射 (Mapping):键值对集合,类似于字典。
contact:
email: alice@example.com
phone: 123-456-7890
yaml
注释
- YAML 文件中可以使用
#符号添加注释。
# This is a comment
name: Alice
yaml
锚点和别名
- 锚点 (Anchor):允许引用相同的对象。
&shared_info
name: Alice
age: 30
user1: *shared_info
user2: *shared_info
yaml
- 别名 (Alias):通过
*符号引用锚点。
user_info:
&shared_info
name: Alice
age: 30
user1: *shared_info
user2: *shared_info
yaml
YAML 的应用场景
- 配置文件 :YAML 常用于配置文件,因为它易于阅读和编写。
- 数据交换 :在不同的服务或系统之间交换数据时,YAML 可以作为一种轻量级的数据交换格式。
- 文档说明 :YAML 也用于编写文档,特别是那些需要结构化数据的地方。
使用 Python 读写和解析 YAML
为了处理 YAML 文件,我们需要使用 Python 的 PyYAML 库。首先,确保安装了 PyYAML 库:
pip install pyyaml
bash
写入 YAML 文件
import yaml
data = {
"user": {
"name": "Alice",
"age": 30,
"hobbies": ["reading", "coding", "traveling"],
"contact": {
"email": "alice@example.com",
"phone": "123-456-7890"
}
}
}
# 写入 YAML 文件
with open('example.yaml', 'w') as file:
yaml.dump(data, file, default_flow_style=False)
python

读取 YAML 文件
import yaml
# 读取 YAML 文件
with open('example.yaml', 'r') as file:
data = yaml.safe_load(file)
print(data)
python
示例 YAML 文件
# example.yaml
user:
name: Alice
age: 30
hobbies:
- reading
- coding
- traveling
contact:
email: alice@example.com
phone: 123-456-7890
yaml

解析 YAML 文件
import yaml
# 读取并解析 YAML 文件
with open('example.yaml', 'r') as file:
data = yaml.safe_load(file)
# 打印数据
print(data['user']['name'])
print(data['user']['hobbies'][1])
print(data['user']['contact']['email'])
# 修改数据
data['user']['age'] = 31
# 写回文件
with open('example.yaml', 'w') as file:
yaml.dump(data, file, default_flow_style=False)
python

YAML 与 Python 数据类型的对应关系
- 标量 :对应 Python 的
str,int,float,bool,NoneType。 - 序列 :对应 Python 的
list或tuple。 - 映射 :对应 Python 的
dict。
结论
YAML 是一种非常实用的数据格式,适用于多种场景,特别是在配置管理和数据交换方面。使用 Python 的 PyYAML 库,我们可以轻松地读写和解析 YAML 文件,从而有效地处理 YAML 格式的数据。通过本文的介绍,你现在已经掌握了 YAML 的基本语法规范以及如何使用 Python 进行读写和解析 YAML 文件。
全部评论 (0)
还没有任何评论哟~
