YAML – 缩进和分离

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 格式,实现更加丰富和高效的应用程序!

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程