不用游标卡尺,Yaml 格式 5 分钟入门

点击上方“编程派”,选择设为“设为星标”

优质文章,第一时间送达!

作者:kingname@未闻Code

GNE 使用 YAML 格式来编写配置文件。

业界常常流传一个笑话,写 YAML 配置的时候,需要用游标卡尺比着屏幕来写。稍稍多一个空格少一个空格,配置文件就会报错。

我们通过 JSON 来做对比,快速学习 YAML 的语法。

注意,同一个意思,用 YAML 可能有多种写法,为了让大家快速掌握,我们只选择一种来介绍。

YAML 与 Python 一样,对缩进敏感,所以大家在写 YAML 时一定要注意缩进。并且 YAML 的缩进只能使用空格,不能使用 Tab。

一对一

对于 JSON 字符串:

{"name": "kingname", "salary": 99999, "address": "杭州"}

对应的 YAML 为:

name: kingname
salary: 99999
address: 杭州

YAML 格式不需要大括号、不需要引号。比 JSON 简洁不少。

数组

对于 JSON 字符串:

["kingname", "产品经理", "天下第一"]

对应的 YAML 为:

- kingname
- 产品经理
- 天下第一

Yaml 的列表是以-开头,并且-与正文之间有一个空格。

字典嵌套

对于 JSON 字符串:

{"info": {"basic_info": {"name": "kingname", "age": 27}, "other_info": {"address": "杭州", "salary": 99999.0}}}

对应的 YAML 为:

info:
    basic_info:
        name: kingname
        age: 27
    other_info:
        address: 杭州
        salary: 99999.0

列表嵌套

对于 JSON 字符串:

{"skill": ["Python", "Golang", "Java"]}

对应的 YAML 为:

skill:
    - Python
    - Golang
    - Java

由于列表["Python", "Golang", "Java"]skill的值,所以他们会存在缩进。YAML 的缩进用几个空格都可以,只要每一项保持一致就行。但由于我经常写 Python,所以习惯使用4个空格作为缩进。

注释

YAML 的注释与 Python 一样,使用#号。

# 以下是基本信息
name: kingname
age: 27

# 以下是高级信息
salary: 99999
single: false
password: 1234567

兼容性

YAML 是 JSON 的超集,所以解析 YAML 的程序也能正常解析 JSON 格式。

在 Python 中,我们使用 pyyaml 来解析 Yaml 格式的字符串。安装方式如下:

pip install pyyaml

安装完成以后,使用如下命令解析 YAML:

import yaml
config = '''
title:
    xpath: //title/text()
host: https://www.xxx.com
noise_node_list:
    - //div[@class="comment-list"]
    - //*[@style="display:none"]
    - //*[@class="contheight"]
with_body_html: false
'''

config_dict = yaml.safe_load(config)

运行效果如下图所示:

这个配置文件我们可以直接改成 JSON,效果如下图所示:

可以看出,实现相同的效果,用 JSON 要写很多的中括号大括号双引号,还要考虑反斜杠的问题。

但使用 YAML,这些问题统统不是问题,可读性高得多。

回复下方「关键词」,获取优质资源

回复关键词「 pybook03」,立即获取主页君与小伙伴一起翻译的《Think Python 2e》电子版

回复关键词「入门资料」,立即获取主页君整理的 10 本 Python 入门书的电子版

回复关键词「m」,立即获取Python精选优质文章合集

回复关键词「book 数字」,将数字替换成 0 及以上数字,有惊喜好礼哦~

题图:pexels,CC0 授权。

好文章,我在看❤️

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值