从0开始python学习-36.pytest中yaml的基本数据结构及锚点引用

目录

1.数据类型

1.写入格式

1. 对象(字典):键:(空格)值

2. 数组(列表):它是使用一组横线"-"开头

2. 嵌套形式

1. 列表中的字典

2. 字典中的字典

3. 字典中的列表

4. 同时有列表和字典

3. 数据类型强转

2. yaml内部数据的引用


1.数据类型

1.写入格式

1. 对象(字典):键:(空格)值

data1: 12 
data2: 8.9
data3: 测试字符串1
data4: '测试字符串2'
data5: "测试字符串3"
data6: True
data7: null
data8: None
data9: 2024-1-2 12:12:00:50

1.1 字符串三种格式都可以,但是如果有特殊字符【\】时使用双引号的方式不会被转义,其它的都会加一个转义符\

1.2 在yaml中如果需要输入None,则应该写为null,如果写的时None会被认为是字符串None

1.3 时间格式写入正常按照格式写就行,但是输出打印的时候会使用datetime的方式

1.4 注意yaml的键不能重复,【:】后面有个空格才写值

打印结果:

{'data1': 12, 'data2': 8.9, 'data3': '测试字符串1\\n', 'data4': '测试字符串2\\n', 'data5': '测试字符串3\n', 'data6': True, 'data7': None, 'data8': 'None', 'data9': datetime.datetime(2024, 1, 2, 12, 12, 50)}

2. 数组(列表):它是使用一组横线"-"开头

方法一:

test:- data1: 10data2: 测试- data2: True

  方法二:

test1:data1: ces1data2: ces2
test2:data3: ces3

2.1 在不同层级下键可以重名

2.2 相同层级下不写-继续写键值对则最后组装成一个字典

打印结果:

# 方法一:
{'test': [{'data1': 10, 'data2': '测试'}, {'data2': True}]}
# 方法二:
{'test1': {'data1': 'ces1', 'data2': 'ces2'}, 'test2': {'data3': 'ces3'}}

2. 嵌套形式

1. 列表中的字典

-data1: ces1data2: ces2
-data3: ces3

打印结果:

[{'data1': 'ces1', 'data2': 'ces2'}, {'data3': 'ces3'}]

2. 字典中的字典

data1:data2: ces

 打印结果:

{'data1': {'data2': 'ces'}}

3. 字典中的列表

data:- data1: 1- data2: 2

打印结果:

{'data': [{'data1': 1}, {'data2': 2}]}

4. 同时有列表和字典

-data1: 1data2: 2
---
data1: ces1
data2: ces2

4.1 当一个yaml文件内有多组数据时,用三个-分隔, 读取时使用yaml.load_all进行读取

4.2 yaml.load_all读取出来是generator格式,需要进行格式转换,可以使用list进行强转后再使用

with open(yaml_path,encoding="utf-8") as f:value = yaml.load_all(f,Loader=yaml.FullLoader)data = list(value)for i in data:print(i)

打印结果:

[{'data1': 1, 'data2': 2}]
{'data1': 'ces1', 'data2': 'ces2'}

3. 数据类型强转

data1: !!int 10
data2: !!int "11"
data3: !!int '12'
data4: !!str 12
data5: !!str 12.5
data6: !!set {a,b,c}

注意:强转前后的数据类型必须要能正常转的,比如不能把布尔型转成整型

打印结果:

{'data1': 10, 'data2': 11, 'data3': 12, 'data4': '12', 'data5': '12.5', 'data6': {'b', 'c', 'a'}

2. yaml内部数据的引用

&建立锚点(标记),*使用锚点,<<表示合并到当前数据

data: &ces  # 在列表上标记锚点- data1: ces1- data2: ces2data1:- data1: &data1 ces3 # 在列表中的值上分别标记锚点- data2: &data2 ces3data2: *ces # 直接使用锚点data3:- ces1: *data1- t: 111- ces2: *data2data4:<<: *cest: 123

打印结果:

{'data': [{'data1': 'ces1'}, {'data2': 'ces2'}], 'data1': [{'data1': 'ces3'}, {'data2': 'ces3'}], 'data2': [{'data1': 'ces1'}, {'data2': 'ces2'}], 'data3': [{'ces1': 'ces3'}, {'t': 111}, {'ces2': 'ces3'}], 'data4': {'data2': 'ces2', 'data1': 'ces1', 't': 123}}

 

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/592319.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023我的编程之路

你的编程学习经历和成长过程&#xff1a; 在我探索编程世界的旅程中&#xff0c;我深刻地认识到&#xff0c;编程不仅仅是一种技术&#xff0c; 是一种思维方式&#xff0c; 一种解决问题的方法。希望通过分享我的编程学习体验&#xff0c;能够启发更多的人看到编程的魅力和价值…

克隆clone github上某个项目的子目录

有时会遇到只需要克隆github某个项目的子目录&#xff0c;此时可以使用以下方法实现&#xff1a; 需求示例&#xff1a; 现需要克隆&#xff1a;https://github.com/SingleZombie/DL-Demos项目中的ddim项目 注&#xff1a;ddim项目的地址为&#xff1a;https://github.com/Sing…

lenovo联想小新Pro-13 2020 Intel IML版笔记本电脑(82DN)原装出厂Win10系统镜像

链接&#xff1a;https://pan.baidu.com/s/1bJpfXudYEC7MJ7qfjDYPdg?pwdjipj 提取码&#xff1a;jipj 原装出厂Windows10系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、联想电脑管家等预装程序 所需要工具&#xff1a;16G或以上的U盘 文件格式&a…

【ps】如何给人偶添加衣服

使用PS工具扣出人物 使用编辑-变形-操控变型 、

java spring boot 获取resource目录下的文档

主要代码 String filePath"templates/test.xls" ClassPathResource classPathResource new ClassPathResource(filePath); InputStream inputStream classPathResource.getInputStream();目录 主要目录存放再这 代码案例 public void downloadTemplate( HttpS…

数据库云平台新数科技完成B轮融资,打造全链路智能化数据库云平台

数据库云平台软件厂商「北京新数科技有限公司」&#xff08;以下简称「新数科技」&#xff09;已于2023年完成B1轮和B2轮融资&#xff0c;分别由渤海创富和彬复资本投资&#xff1b;义柏资本担任本轮融资独家财务顾问。 新数科技成立于2014年&#xff0c;当前产品矩阵包括数据库…

一起玩儿物联网人工智能小车(ESP32)——23. 变量与函数(一)

摘要&#xff1a;本文介绍变量和函数的基本知识 经过一个阶段的学习&#xff0c;大家对程序开发也有了一个初步的了解。这只能说是刚刚开始&#xff0c;所能实现的功能还非常的有限。接下来就是拓展一下大家的基本开发技能。 在前面的开发中&#xff0c;大家如果认真的练习并且…

kotlin foreach 循环

java中的foreach循环也使用于kotlin &#xff0c;先回顾下java里面的foreach循环 java foreach循环格式 for(元素类型t 元素变量x : 遍历对象obj){引用了x的语句;} 例如&#xff1a; int[] intary {1,2,3,4};for (int a: intary) {Log.d("intary", String.value…

模拟控制方式(PWM)

引言 PWM&#xff08;脉冲宽度调制&#xff09;是一种常见的模拟控制方式&#xff0c;通过调节脉冲宽度来控制功率输出的占空比&#xff0c;从而实现模拟信号的传输和控制。在许多领域中&#xff0c;PWM都得到了广泛的应用&#xff0c;如电机控制、LED调光、音频控制等。本文将…

关于this.router 和this.route的总结

this.router 和this.route这2个东西一直在用可是我还是迷迷糊糊的不知道啥啥意思&#xff0c;尤其是idea的提示功能&#xff0c;总是让我一个回车就弄错了。 总结一波&#xff1a; 概述 this.$router(路由实例) : 是VueRouter的实例.包含了很多属性和对象&#xff08;比如 h…

【PHP】PHP实现RSA加密,解密,加签,验签

1.php RSA生成公私钥 // 生成密钥对 $config array("digest_alg" > "sha256", // 加密算法"private_key_bits" > 2048, // 密钥长度&#xff08;位数&#xff09; );// 创建并保存私钥到文件 $res openssl_pkey_new($config); if (!fil…

.NET Core SkiaSharp 替代 System.Drawing.Common 的一些用法

在.NET 6中&#xff0c;微软官方建议把 System.Drawing.Common 迁移到 SkiaSharp 库。因为System.Drawing.Common 被设计为 Window 技术的精简包装器&#xff0c;因此其跨平台实现欠佳。 SkiaSharp是一个基于谷歌的Skia图形库&#xff08;Skia.org&#xff09;的用于.NET平台的…

WebSocket项目中难点与解决方法

1、难点一&#xff1a;连接建立与保持 问题描述&#xff1a; 在项目中&#xff0c;我们发现WebSocket初始连接负担较大&#xff0c;主要体现在频繁的连接建立和保持连接的开销较高。 解决方法&#xff1a; 1. 连接池管理&#xff1a;我们引入了websocket-pool库&#xff0c;通…

Mysqld的关键优化参数

skip-name-resolve 现象 mysql连接很慢&#xff0c;登陆到服务器上查看服务器日志都是正常的&#xff0c;无可疑记录&#xff0c;登陆到mysql服务器上&#xff0c;查看下进程&#xff0c;发现有很多这样的连接&#xff1a; 218 | unauthenticated user | 192.168.10.6:44500 |…

Springcloud 微服务实战笔记 Eureka

服务治理 服务注册 在服务治理框架中&#xff0c;通常都会构建一个注册中心&#xff0c;每个服务单元向注册中心登记自己提供的服务&#xff0c;将主机与端口号、版本号、通信协议等一些附加信息告知注册中心&#xff0c;注册中心按服务名分类组织服务清单。当服务启动后&…

PS制作2寸或者1寸排版打印照

最近家人需要2寸照&#xff0c;然后之前照的摄影馆给打印的是一版1寸照纸质和一张精修的原版照&#xff0c;然后要打印2寸照的话就存在两种选择&#xff1a; 需要自己做排版打印照&#xff0c;拿去打印店打印&#xff0c;要么就是直接拿着这张精修的单照去打印店让打印店的工作…

Vue websocket的封装及使用

创建 WebSocket 连接的函数 创建 WebSocket 连接&#xff1a;通过传入的 url 参数创建一个 WebSocket 实例。 监听连接打开事件&#xff1a;当连接成功建立时&#xff0c;执行传入的 onOpen 回调函数。 监听消息接收事件&#xff1a;当接收到消息时&#xff0c;将消息解析为 …

NLP基础——TF-IDF

TF-IDF TF-IDF全称为“Term Frequency-Inverse Document Frequency”&#xff0c;是一种用于信息检索与文本挖掘的常用加权技术。该方法用于评估一个词语&#xff08;word&#xff09;对于一个文件集&#xff08;document&#xff09;或一个语料库中的其中一份文件的重要程度。…

如何删除K8S中的Pod

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

全国(山东、安徽)职业技能大赛--信息安全管理与评估大赛题目+答案讲解——linux应急响应篇

🍬 博主介绍👨‍🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~ ✨主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】 🎉点赞➕评论➕收藏 == 养成习惯(一键三连)😋 🎉欢迎关注💗一起学习👍一起讨论⭐️一起进步…