YAML – 缩进和分离
YAML(YAML Ain’t Markup Language)是一种面向人类的数据序列化格式,旨在成为一种比 XML 和 JSON 更易读、更容易编写的格式。与 XML 和 JSON 不同,YAML 不是一种标记语言,而是一种数据格式。它使用缩进和分离来表示数据结构,不需要使用额外的标记语言,这使得它更加容易看懂和编辑。
缩进
YAML 使用缩进来表示嵌套关系,它使用空格而不是制表符。缩进必须使用相同数量的空格,不能混合使用空格和制表符。例如,下面的例子是一个包含嵌套列表的 YAML 文档:
- name: Alice
age: 25
hobbies:
- reading
- hiking
- name: Bob
age: 30
hobbies:
- cooking
- swimming
在上面的例子中,每个列表项都由一个连字符开头,后面跟着一个空格。每行都有相同数量的缩进,子项的缩进比父项的缩进多两个空格,以此表示嵌套关系。
分离
YAML 使用分离来表示键和值之间的关系。冒号(:)用于分离键和值。在冒号后面必须跟着一个空格。例如,下面的例子是一个包含键值对的 YAML 文档:
name: Alice
age: 25
hobbies:
- reading
- hiking
在上面的例子中,每个键值对都由一个冒号分隔,并且键和值之间有一个空格。
多行文本
有时候一个文本值比较长,需要占据多行,YAML 提供了三种方式来表示多行文本:折叠块,字面块和引用块。
折叠块
当一个文本值跨越多行,但是中间没有空行时,可以使用折叠块来表示这个文本。折叠块会将多行文本合并为一行,并删除行末的换行符和空格。在 YAML 中,折叠块使用一个垂直条(|)进行表示。例如:
description: |
This is a long description
that spans multiple lines.
It will be folded into a
single line.
字面块
字面块会原样输出多行文本,包括换行符和空格。在 YAML 中,字面块使用两个垂直条(||)进行表示。例如:
message: ||
This is a long message
that spans multiple lines.
It will be output as
multiple lines.
引用块
引用块将多行文本存储到一个独立的文件中,并在 YAML 中引用该文件。引用块使用一个小于号(<)进行表示。例如:
data:
< multi_line_data.txt
在上面的例子中,数据将从 multi_line_data.txt 文件中读取。
Yaml库
对于 Python、Go、Java、Ruby 和 C# 等编程语言,YAML 都提供了相应的库。这些库可以将 YAML 转换为代码可读的对象,也可以反向处理。这里以 Python 的 PyYAML 库为例,简单说明如何使用该库加载和保存 YAML 数据。
加载 YAML 数据
使用 PyYAML 库加载 YAML 数据非常简单。只需要使用 yaml.load() 函数将 YAML 数据转换为 Python 对象即可。例如:
import yaml
with open("data.yml", "r") as f:
data = yaml.load(f, Loader=yaml.FullLoader)
print(data)
在上面的例子中,使用 with 语句打开一个 YAML 文件,并将数据使用 yaml.load() 函数转换为 Python 对象。最后,使用 print() 函数将 Python 对象输出到控制台。
保存 YAML 数据
使用 PyYAML 库保存 YAML 数据也非常简单。只需要使用 yaml.dump() 函数将 Python 对象转换为 YAML 数据即可。例如:
import yaml
data = {
"name": "Alice",
"age": 25,
"hobbies": [
"reading",
"hiking"
]
}
with open("data.yml", "w") as f:
yaml.dump(data, f)
在上面的例子中,定义了一个 Python 对象,并使用 yaml.dump() 函数将其转换为 YAML 数据并保存到文件中。
结论
在本篇文章中,我们介绍了 YAML 数据格式,并讲解了它使用缩进和分离来表示数据结构,不需要使用额外的标记语言,这使得它更加容易看懂和编辑。我们还介绍了多行文本的三种方式:折叠块,字面块和引用块,并且给出了使用 PyYAML 库加载和保存 YAML 数据的示例代码。相信本文会对您有所帮助,欢迎探索 YAML 数据格式的更多应用场景!
我们希望本文的介绍可以让大家更好地理解 YAML 格式的基本语法,以及如何在实际开发中使用 YAML 来存储和表示数据。无论是使用 Python、Go、Java、Ruby 或 C#,只要掌握了 YAML 的基本知识,就可以轻松地使用 YAML 库来处理 YAML 格式的数据。祝愿大家在实际开发中能够充分利用 YAML 格式,实现更加丰富和高效的应用程序!