yml文件tab 空格_Yaml文件,超详细讲解

本文详细介绍了YAML文件的用途、基本语法规则和数据结构,包括对象、数组和纯量类型。重点讲解了如何在YAML中表示键值对、列表和不同类型的值,并提供了与Python数据结构的转换示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

YAML文件简单介绍

YAML 是一种可读性非常高,与程序语言数据结构非常接近。同时具备丰富的表达能力和可扩展性,并且易于使用的数据标记语言。

YAML全称其实是"YAML Ain‘t a Markup Language"(YAML不是一种标记语言)的递归缩写,所以它强调的是数据本身,而不是以标记为重点

为什么要使用YAML文件?

其实YAML文件也是一种配置文件,但是相较于ini,conf配置文件来说,更加的简洁,操作简单,还能存放不同类型的数据;而像ini存储的值就都是字符串类型,读取之后还要手动转换

YAML的基本语法规则

大小写敏感

使用缩进表示层级关系

缩进时不允许使用Tab键,只允许使用空格。(可以将你的ide的tab按键输出替换成4个空格)

缩进的空格数目不重要,只要相同层级的元素左侧对齐即可

#表示注释

YAML支持的数据结构

对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)

数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)

纯量(scalars):单个的、不可再分的值

YAML,对象数据类型

对象的一组键值对,使用冒号结构表示。

animal: dogs

转换成Python数据结构,如下:

{‘animal‘: ‘dogs‘}

将所有键值对赋值。

hash: { name: Steve, foo: bar }

转换成Python数据结构,如下:

{‘hash‘: {‘name‘: ‘Steve‘, ‘foo‘: ‘bar‘}}

将列表赋值

lists : [1,2,3]

转换成Python数据结构,如下:

{‘lists‘: [1, 2, 3]}

将元组赋值

tuples : (1,2,3)

转换成Python数据结构,如下:

{‘tuples‘: ‘(1,2,3)‘}

总结

当赋值列表、键值对时,转换成Python数据结构是可以直接当列表、字典使用的;、

当赋值元组时,转换后也是字符串

最终输出的都是字典类型,可以通过key获取对应的值

YAML,数组

这里说的数组结构跟 [1,2,3,4] 不太一样,如下:

cool_list:- 10

- 15

- 12hard_list:-{key: value}- [1,2,3]-test:- 1

- 2

- 3twice_list:-

-{a: b}-{c: d}- {e: f}

转换成Python数据结构,如下:

‘cool_list‘: [10, 15, 12],‘hard_list‘: [

{‘key‘: ‘value‘},

[1, 2, 3],

{‘test‘: [1, 2, 3]

}

],‘twice_list‘: [

[

{‘a‘: ‘b‘},

{‘c‘: ‘d‘},

{‘e‘: ‘f‘}

]

]

总结

当你写成下面这种数据结构时 ,也会自动转成字典类型,如: {‘key‘: ‘value,val2‘}

key:

value,val2

YAML,纯量

纯量是最基本的、不可再分的值;类似基本数据类型

字符串

布尔值

整数

浮点数

时间

日期

Null

int: 12float:12.3string: pets

bool: true

None: null

time:2001-12-14t21:59:43.10-05:00date:2018-03-21

执行结果

{‘int‘: 12,‘float‘: 12.3,‘string‘: ‘pets‘,‘bool‘: True,‘None‘: None,‘time‘: datetime.datetime(2001, 12, 14, 21, 59, 43, 100000, tzinfo=datetime.timezone(datetime.timedelta(days=-1, seconds=68400))),‘date‘: datetime.date(2018, 3, 21)

}

包含知识点

时间使用ISO 8601格式,时间和日期之间使用T连接,最后使用+代表时区

日期必须使用ISO 8601格式,即 yyyy-MM-dd

bool类型:true,True,false,False都可以

可以用 ~ 表示 null

YAML,字符串详解

字符串是最复杂,但是又最常见的一种数据类型。

字符串默认不使用引号 ‘‘   "" 包裹着

基础写法

str: 这是一行字符串

转换成Python数据结构,如下:

{‘str‘: ‘这是一行字符串‘}

什么情况下要用引号?当字符串包含了空格or特殊字符等

str_s: "字符串包含 空格&特殊字符!@#$%^&*()"

转换成Python数据结构,如下:

{‘str_s‘: ‘字符串包含 空格&特殊字符!@#$%^&*()‘}

要注意的是,双引号 "" 不会对特殊字符转义

str1: ‘test\n1‘str2:"test\n2"

转换成Python数据结构,如下:

{‘str1‘: ‘test\\n1‘, ‘str2‘: ‘test\n2‘}

可以拆分多行,每一行就是一个空格,但是要注意他们的层级必须一致

st_string: hello

world

转换成Python数据结构,如下:

{‘st_string‘: ‘hello world‘}

YAML,类型强转

YAML 允许使用两个感叹号,强制转换数据类型

is: !!str 123sf: !!float‘12.22‘si: !!int‘222‘

执行结果如下

{‘is‘: ‘123‘,‘sf‘: 12.22,‘si‘: 222}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值