数据格式-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