首页 > 其他分享 >YAML+PyYAML笔记 3 | YAML集合、结构、标量、标记使用

YAML+PyYAML笔记 3 | YAML集合、结构、标量、标记使用

时间:2023-07-28 10:03:23浏览次数:30  
标签:表示 PyYAML willow corn yellow YAML 标量 red

(3 | YAML集合、结构、标量、标记使用)

1 集合

YAML 支持三种集合类型:列表,映射和集。

1.1 列表

  • 列表是一种序列结构,它使用连字符“-”表示;
  • 如下三个元素的列表,元素之间用“-”
fruit:
 - apple
 - rubber
 - pear
  • 使用Pyyaml解析:
# 解析
with open("config_jihe.yaml") as f:
    yaml_data2 = yaml.load(f, Loader=yaml.FullLoader)
print(yaml_data2)

# 输出
{'fruit': ['apple', 'rubber', 'pear']}

1.2 映射

  • 即一种键值对结构,它使用冒号“:”表示;
  • 如下:
fruit:
  - apple
  - rubber
  - pear

vegetable:
  green: cucumber
  red: tomato
  yellow: corn
  • 使用Pyyaml解析:
{'fruit': ['apple', 'rubber', 'pear'], 'vegetable': {'green': 'cucumber', 'red': 'tomato', 'yellow': 'corn'}}

1.3 集

  • 无序不重复的数据类型;
  • 用大括号“{}”表示;
tree: {poplar, willow, pine}
{'tree': {'poplar': None, 'willow': None, 'pine': None}}

2 结构

  • 可用于任何数据类型的复杂性结构;
  • 包括集合和其他数据类型。

2.1 多行结构

  • 表示复杂数据类型的方式;
  • 如下:
vegetable:
  green: cucumber
  red: tomato
  yellow: corn

tree:
  one: poplar
  two: willow
  three: pine
{'vegetable': {'green': 'cucumber', 'red': 'tomato', 'yellow': 'corn'}, 'tree': {'one': 'poplar', 'two': 'willow', 'three': 'pine'}}

2.2 单行结构

  • 在一行上表示复杂的结构:
  • 如下:
data: {vegetable: {green: cucumber, red: tomato, yellow: corn}, tree: {one: poplar, two: willow, three: pine}}
{'data': {'vegetable': {'green': 'cucumber', 'red': 'tomato', 'yellow': 'corn'}, 'tree': {'one': 'poplar', 'two': 'willow', 'three': 'pine'}}}

3 字面量

  • 字面量可以表示字符串、数字、布尔值、null 值等;
# 字符串:在双引号中使用转义符号来表示特殊字符
str: "Hello,\\nWorld!"

# 数字:可以表示整数和浮点数
int: 88888
float: 3.141592653

# 布尔值:可以使用true和false表示
boolean: true

# null 值:使用 null 来表示空值
empty: null
  • 使用Pyyaml解析:
{'str': 'Hello,\\nWorld!', 'int': 88888, 'float': 3.141592653, 'boolean': True, 'empty': None}

4 标量

  • 分为单引号、双引号和无引号;
# 单引号:表示精确字符串,不会进行转义
single: 'Hello,\nworld!'

# 双引号:表示标准字符串,可以进行转义
double: "Hello,\\nworld!"

# 无引号:可以识别特殊字符,但空格会自动被转义成字符串
none: hello world
{'single': 'Hello,\\nworld!', 'double': 'Hello,\\nworld!', 'none': 'hello world'}

5 标记

# !!str:表示字符串类型。如:
key: !!str string

# !!int:表示整数类型。如:
key: !!int 123

# !!float:表示浮点数类型。如:
key: !!float 3.14

# !!bool:表示布尔类型。如:
key: !!bool true

# &name:为数据定义一个锚点,可以在后面使用锚点引用。如:
person: &p
name: xiaozhang
age: 88

student:
<<: *p
grade: 100

6 指示符

  • 指示符包括用于描述YAML文档内容的特殊语义:
编号 字符 功能
1 _ 表示块序列条目
2 ? 表示映射键
3 : 表示映射值
4 , 表示流集合条目
5 [ 开始流序列
6 ] 结束流序列
7 { 启动流映射
8 } 结束流映射
9 # 表示注释
10 & 表示节点的锚属性
11 * 表示别名节点
12 ! 表示节点的标签
13 Ι 表示一个字面块标量
14 > 表示折叠块标量
15 ' 单引号围绕引用的流标量
16 " 双引号包围双引号流标量
17 % 表示使用的指令

标签:表示,PyYAML,willow,corn,yellow,YAML,标量,red
From: https://blog.51cto.com/NoamaNelson/6878465

相关文章

  • mysql 代码适配 postgresql 适配改写,优化案例(行转列 + 标量子查询改写)
    最近在适配个MySQL应用的项目,各种SQL改成PG兼容的语法真的是脑壳痛,今天遇到个有意思的案例。原MySQLSQL语句:SELECTDISTINCTl.MALL_NAME'项目',t.CONT_NO'合同编号',t.COMPANY_NAME'租户',t.STORE_NOS'铺位号',(selectGROUP_CONCAT(r.FLOO......
  • PHP 中优雅的将JSON/XML/YAML 等数据反序列化成指定的类对象
    这个小事情何以需要记上一笔?实在是因为当用了各种编程语言以后,发现系统I/O处,尤其对外的接口Interface最重要,它或许可以被称为Specification,规约。PHP是混合型编程风格的语言,不强求完全的OOP。但是代码不OOP化的话,又得不到更多的开发工具的支持。尤其在PHP中如果只是用数组结......
  • spring-boot-yaml的用法
    1.yaml简洁以数据为核心·基本语法大小写敏感数值前必须要有空格,作为分割符·数据格式对象数组(使用“-”表示数组每个元素)常量·参数引用$server:port:2023#数据的定义name:lisi#对象的定义person:name:${lisi}age:12......
  • yaml格式
       ......
  • dockercompose yaml命令行参数
    如何使用docker-compose的命令行参数1.确定所需的命令行参数在使用docker-compose命令行工具时,可以通过添加一些参数来自定义和控制容器的行为。以下是一些常见的命令行参数:参数描述-f,--file指定docker-compose文件的路径-p,--project-name指定项目的名称-......
  • filebeat.yaml(k8s configmap)部署清单
    apiVersion:v1kind:ConfigMapmetadata:name:bh-shard-2-filebeat-confignamespace:bluehelixlabels:app:bh-shard-2-testapp.kubernetes.io/managed-by:Helmchart:java-0.9.9heritage:Helmrelease:bluehelix-bh-shard-2data:......
  • kubectl apply -f mysql.yaml error: the path "mysql.yaml" does not exist
    问题解决:kubectlapply-fmysql.yamlerror:thepath"mysql.yaml"doesnotexist在使用Kubernetes进行容器编排时,我们经常使用kubectl命令行工具与Kubernetes集群进行交互。其中,kubectlapply命令用于创建或更新Kubernetes资源的配置文件。然而,有时在执行kubectlapply-fmys......
  • springboot——yaml格式
    ......
  • pytest + yaml 框架 -52.支持 websocket 协议
    前言v1.4.2版本支持websocket协议python操作websocket协议环境准备pip3installwebsocket-clientpip3installwebsockets基本代码示例fromwebsocketimportcreate_connectionimportjsonurl='ws://localhost:8081/ws'ws=create_connection(url,timeout......
  • Perl标量数据
    在Perl内部,总是按“双精度浮点数”的要求保存数字并进行运算。浮点数直接量2.1含义:直接量并非运算结果,也不是I/O操作的结果,它是直接键入程序源代码中的数据2.2Perl浮点数的写法~......