一日一技:不用游标卡尺,Yaml 格式5分钟入门

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 一日一技:不用游标卡尺,Yaml 格式5分钟入门

摄影:产品经理与产品经理在家里的美好时光

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,这些问题统统不是问题,可读性高得多。

目录
相关文章
|
6月前
|
XML Java 数据格式
SpringBoot中yaml格式、语法规则及数据读取方式(3种)
SpringBoot中yaml格式、语法规则及数据读取方式(3种)
660 0
|
XML JSON Java
SpringBoot入门(三) 之springboot的配置配置文件以及yaml的使用
SpringBoot入门(三) 之springboot的配置配置文件以及yaml的使用
236 0
SpringBoot入门(三) 之springboot的配置配置文件以及yaml的使用
|
5月前
|
存储 JSON JavaScript
【chat-gpt问答记录】python将数据存为json格式和yaml格式
【chat-gpt问答记录】python将数据存为json格式和yaml格式
84 1
|
2月前
|
XML Java C语言
yaml语法格式,springboot中yaml的使用
本文介绍了YAML的语法格式和数据类型表示方法,并详细讲解了如何在Spring Boot中使用YAML,包括@ConfigurationProperties注解及Bean的创建、编写Controller、配置application.yaml配置文件,以及在pom.xml中开启YAML提示。
|
5月前
|
存储 Java 应用服务中间件
后端企业级开发之yaml数据序列化格式文件详解2024
后端企业级开发之yaml数据序列化格式文件详解2024
63 0
|
6月前
|
Kubernetes 应用服务中间件 数据安全/隐私保护
yaml文件格式详解 及 k8s实战演示
yaml文件格式详解 及 k8s实战演示
|
6月前
|
存储 JSON JavaScript
【YAML语法规范指南】从入门到精通,揭秘神秘语法,引领配置文件解析指南(基础结构篇)
"YAML Ain't Markup Language"(简称YAML)是一种专为人类设计的数据序列化语言,适用于多种现代编程语言,可广泛应用于各类日常任务。它是一种以人类可读形式呈现的、适用于多种语言的Unicode数据序列化标准。它基于敏捷编程中常见的本地数据结构,广泛应用于配置文件、互联网消息传递、对象持久化以及数据审计等多个领域。遵循Unicode标准、
674 8
【YAML语法规范指南】从入门到精通,揭秘神秘语法,引领配置文件解析指南(基础结构篇)
Viper中的yaml配置文件入门,Viper开发环境和生产环境的隔离
Viper中的yaml配置文件入门,Viper开发环境和生产环境的隔离
|
XML JSON Java
【SpringBoot学习笔记 二】YAML格式文件配置方式详解
【SpringBoot学习笔记 二】YAML格式文件配置方式详解
980 0
|
JavaScript 数据库
codemirror+js-yaml实现YAML格式的文本编辑器以及校验YAML格式是否符合规范的实现
codemirror+js-yaml实现YAML格式的文本编辑器以及校验YAML格式是否符合规范的实现
3008 0