数据格式-YAML详解

全文预计阅读时间:11分钟

目录

1、什么是YAML

2、YAML语法规范

3、Python操作YAML

什么是YAML

PART 01

1.1

什么是YAML

YAML是一种人类可读的数据序列化语言,常用于配置文件和数据交换。YAML的全称是”YAML Ain’t Markup Language”创业项目,它最初被设计为”Yet Another Markup Language”,但后来为了避免混淆,官方名称改为了现在的形式,强调YAML不是一种标记语言。YAML的设计目标是使数据在不同编程语言之间的交换和共享变得简单。它采用了一种简洁、直观的语法,以易于阅读和编写的方式表示数据结构。

YAML与XML、JSON类似,都是常用的数据交换格式yaml格式,它们都可以用于在不同的系统或应用程序之间进行数据传输。

1.2

YAML的特点

1.3

YAML和JSON、XML的区别

YAML、XML 和 JSON 都是常用的数据交换格式,它们都可以用于在不同的系统或应用程序之间进行数据传输。它们之间的主要区别如下:

YAML语法规范

PART 02

2.1

基本用法

2.1

数据类型

# key: value,冒号后面要加一个空格。
key: value
# 使用缩进表示层级关系
key:
child-key1: value1
child-key2: value2

较为复杂的对象格式,可以使用问号加一个空格代表一个复杂的 key,配合一个冒号加一个空格代表一个 value,这种表示方式在 YAML 中被称为“流式语法”。下面的例子表示对象的属性是一个数组 [complexkey1,complexkey2],对应的值也是一个数组 [complexvalue1,complexvalue2]

? 
    - complexkey1
    - complexkey2
:
    - complexvalue1
    - complexvalue2

# 以- 开头的行表示构成一个数组
- A
- B
- C

# 多维数组
key: [value1, value2, ...]

# 子成员是一个数组,可以在该项下面缩进一个空格。
-
 
- A
 - B
 - C

例子1:companies 属性是一个数组,每一个数组元素又是由 id、name、price 三个属性构成。

正常方式表示:

companies:
    -
        id: 1
        name: company1
        price: 200W
    -
        id: 2
        name: company2
        price: 500W

流式(flow)方式表示:

companies: [{id: 1,name: company1,price: 200W},{id: 2,name: company2,price: 500W}]

例子2:复合结构(数组和对象构成)

languages:
  - Ruby
  - Perl
  - Python
websites:
  YAML: yaml.org
  Ruby: ruby-lang.org
  Python: python.org
  Perl: use.perl.org


# 转换为json
{
  languages: [ 'Ruby', 'Perl', 'Python'],
  websites: {
    YAML: 'yaml.org',
    Ruby: 'ruby-lang.org',
    Python: 'python.org',
    Perl: 'use.perl.org' 
  }
}

# 字符串
message: Hello, world!
# 布尔值
is_valid: true
is_open: false
# 整数
age: 30
# 浮点数
decimal: 3.14159265359
# 空值
empty_value: null
# 时间
event_time: 2023-07-06T14:30:00Z
# 日期
birthday: 1990-05-17

Python操作YAML

PART 02

2.1

Python操作YAML

Python操作yaml文件主要需要使用pyyaml库,这是一个Python的YAML处理库。可以使用它来读取、写入和创建YAML文件。以下是一些基本的操作:

1、安装pyyaml库

pip install pyyaml

2、导入pyyaml库

import yaml

3、读取YAML文件:使用yaml.safe_load()函数读取YAML文件内容,并将其转换为Python对象(如字典或列表)。

with open('example.yaml', 'r') as file: 
    data = yaml.safe_load(file)

4、写入YAML文件:使用yaml.safe_dump()函数安全地将Python对象转换为yaml格式并写入文件。

data = {'name': 'John Doe', 'age': 30, 'job': 'Software Engineer'}

with open('data.yaml', 'w') as f:
    yaml.safe_dump(data, f)

5、修改YAML文件:使用yaml.safe_load()函数读取了其中的内容。然后将“key”的值更改为“new_value”,并将修改后的内容写回到文件中。使用yaml.dump()函数将数据写入文件中。

import yaml

# 读取YAML文件
with open("example.yaml", "r", encoding="utf-8") as file:
    data = yaml.safe_load(file)

# 修改YAML文件中的数据
data["key"] = "new_value"

# 将修改后的数据写回YAML文件
with open("example.yaml", "w", encoding="utf-8") as file:
    yaml.safe_dump(data, file, default_flow_style=False, allow_unicode=True)

说明:default_flow_style=False和allow_unicode=True是PyYAML库中safe_dump函数的参数。

default_flow_style=False:这个参数表示使用块状格式(block style)而不是流式格式(flow style)来表示YAML数据。块状格式更适合表示复杂的数据结构,而流式格式更适合表示简单的数据结构。默认情况下,PyYAML使用流式格式。

allow_unicode=True:这个参数表示允许在YAML文件中使用Unicode字符。默认情况下,PyYAML不允许使用Unicode字符。如果设置为Trueyaml格式,则可以在YAML文件中使用Unicode字符。

END

注册会员查看全部内容……

限时特惠本站每日持续更新海量各大内部创业教程,年会员只要98元,全站资源免费下载
点击查看详情
站长微信:9200327