YAML+PyYAML笔记 2 | YAML缩进、分离、注释简单使用
2 | YAML缩进、分离、注释简单使用
- 1 简介
- 2 缩进
- 3 分离
- 4 多行文本
- 4.1 折叠块
- 4.2 字面块
- 4.3 引用块
- 5 注释
- 5.1 行内注释
- 5.2 块注释
- 5.3 完美注释示例
1 简介
YAML不是一种标记语言,而是一种数据格式;- 使用缩进和分离来表示数据结构,不需要使用额外的标记语言。
2 缩进
- 使用缩进来表示嵌套关系;
- 标识方式为使用空格;
- 缩进必须使用相同数量的空格;
- 比如以下每个列表项都由一个连字符开头,后面跟着一个空格;(每行都有相同数量的缩进,子项的缩进比父项的缩进多两个空格,以此表示嵌套关系)
- name: noamanelsonbolg: https://blog.csdn.net/NoamaNelsondescription: testerlanguage:- python- c- c++- go- javaoperating_system:- linux- windows- name: xiaomingage: 88description: Old Monster
- 输出为:
# 解析
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/27
# 文件名称:yaml_read.py
# 作用:yaml读取
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelsonwith open("config_suojin.yaml") as f:yaml_data2 = yaml.load(f, Loader=yaml.FullLoader)
print(yaml_data2)# 输出
[{'name': 'noamanelson','bolg': 'https://blog.csdn.net/NoamaNelson', 'description': 'tester', 'language': ['python', 'c', 'c++', 'go', 'java'], 'operating_system': ['linux', 'windows']}, {'name': 'xiaoming','age': 88, 'description': 'Old Monster'}]
3 分离
- 使用分离表示键和值之间的关系;
- 冒号用于分离键和值;
- 冒号之后必须跟空格;
- 示例:
author: libai
age: 未知
verse_title: 静夜思
content:one: 窗前明月光,two: 疑是地上霜.three: 举头望明月,four: 低头思故乡.
- 解析:
with open("config_suojin.yaml") as f:yaml_data2 = yaml.load(f, Loader=yaml.FullLoader)
print(yaml_data2)# 输出:
{'author': 'libai',
'age': '未知',
'verse_title': '静夜思',
'content': {'one': '窗前明月光,', 'two': '疑是地上霜.', 'three': '举头望明月,', 'four': '低头思故乡.'}}
4 多行文本
- 文本值比较长,需要占据多行,表示方式有以下:

折叠块,字面块、引用块
4.1 折叠块
- 折叠块将多行文本合并为一行;
- 并删除行末的换行符和空格;
- 使用垂直条
>进行表示。
song: >曾经有一份真挚的爱情摆在我的面前我没有好好珍惜 等到失去时 才感到后悔如果老天能够再给我一次机会我回对那个女孩说 我爱你如果非要在这个爱上加个期限的话我希望是 一万年曾是你陪我 度过漫长的那么多天是你对我说还有真爱而我却不懂 如何呵护你爱你却伤了你的心就在我的心 刚要融化的时候而你却悄悄地离去我多希望你 希望你回心转意因为我将会把你珍惜还有什么话要说 还有多少泪要流难道你不知道 我对你的爱还有什么话要说 还有多少泪要流有一天我会让你回心转意# 解析
{'song': '曾经有一份真挚的爱情摆在我的面前 我没有好好珍惜 等到失去时 才感到后悔 如果老天能够再给我一次机会 我回对那个女孩说 我爱你 如果非要在这个爱上加个期限的话 我希望是 一万年 曾是你陪我 度过漫长的那么多天 是你对我说还有真爱 而我却不懂 如何呵护你 爱你却伤了你的心 就在我的心 刚要融化的时候 而你却悄悄地离去 我多希望你 希望你回心转意 因为我将会把你珍惜 还有什么话要说 还有多少泪要流 难道你不知道 我对你的爱 还有什么话要说 还有多少泪要流 有一天我会让你回心转意\n'}
4.2 字面块
- 字面块会原样输出多行文本;
- 包括换行符和空格;
- 用垂直条
(|)进行表示。
song: |曾经有一份真挚的爱情摆在我的面前我没有好好珍惜 等到失去时 才感到后悔如果老天能够再给我一次机会我回对那个女孩说 我爱你如果非要在这个爱上加个期限的话我希望是 一万年曾是你陪我 度过漫长的那么多天是你对我说还有真爱而我却不懂 如何呵护你爱你却伤了你的心就在我的心 刚要融化的时候而你却悄悄地离去我多希望你 希望你回心转意因为我将会把你珍惜还有什么话要说 还有多少泪要流难道你不知道 我对你的爱还有什么话要说 还有多少泪要流有一天我会让你回心转意# 解析
{'song': '曾经有一份真挚的爱情摆在我的面前\n我没有好好珍惜 等到失去时 才感到后悔\n如果老天能够再给我一次机会\n我回对那个女孩说 我爱你\n如果非要在这个爱上加个期限的话\n我希望是 一万年\n曾是你陪我 度过漫长的那么多天\n是你对我说还有真爱\n而我却不懂 如何呵护你\n爱你却伤了你的心\n就在我的心 刚要融化的时候\n而你却悄悄地离去\n我多希望你 希望你回心转意\n因为我将会把你珍惜\n还有什么话要说 还有多少泪要流\n难道你不知道 我对你的爱\n还有什么话要说 还有多少泪要流\n有一天我会让你回心转意\n'}
4.3 引用块
- 引用会用到
&锚点符合和*星号符号; &用来建立锚点,<<表示合并到当前数据, 用来引用锚点;
user: &useraddname: xiaozhangage: 20dept:id: 12324343434<<: *useradd#相当于:
user: name: xiaozhangage: 20dept:id: 12324343434name: xiaozhangage: 20
- 文件内引用已经定义好的变量:
base.host: https://xxx.com
add.person.url: ${base.host}/person/add
5 注释
- 分行内注释和块注释。
5.1 行内注释
- 行内注释用
#符号; #符号后面的内容会被解析器忽略;
# 行内注释
name: xiaozhang # 这是name的值
5.2 块注释
- 即多行注释;
#- name: noamanelson
# bolg: https://blog.csdn.net/NoamaNelsondescription: testerlanguage:- python- c- c++- go- java
# operating_system:
# - linux
# - windows
#- name: xiaoming
# age: 88
# description: Old Monster
{'description': 'tester', 'language': ['python', 'c', 'c++', 'go', 'java']}
5.3 完美注释示例
# 配置文件
#
# 下面是一些基本的设置
app.name: "app_demo" # 应用程序名称
app.host: "localhost" # 应用程序主机名
app.port: 8080 # 应用程序端口
app.debug: true # 是否输出调试信息# 数据库配置项
#
# 数据库地址
db.host: "localhost"
# 数据库端口号
db.port: 3306
# 数据库名
db.name: "database"
# 数据库用户名
db.user: "root"
# 数据库密码
{'app.name': 'app_demo', 'app.host': 'localhost', 'app.port': 8080, 'app.debug': True, 'db.host': 'localhost', 'db.port': 3306, 'db.name': 'database', 'db.user': 'root', 'db.password': '123456'}
相关文章:
YAML+PyYAML笔记 2 | YAML缩进、分离、注释简单使用
2 | YAML缩进、分离、注释简单使用 1 简介2 缩进3 分离4 多行文本4.1 折叠块4.2 字面块4.3 引用块 5 注释5.1 行内注释5.2 块注释5.3 完美注释示例 1 简介 YAML 不是一种标记语言,而是一种数据格式;使用缩进和分离来表示数据结构,不需要使用…...
Array(20) 和 Array.apply(null, {length: 20})
1.Array(20) 其结果是: 创建了一个长度为20,但元素均为 empty 的数组。 2.Array.apply(null, { length: 20 }) 其结果是: 创建了一个长度为20,但元素均为 undefined 的数组。 3.异同 3.1相同 console.log(arr1[0] arr2[0]) /…...
Mind+积木编程控制小水泵给宠物喂水
前期用scratch,带着小朋友做了大鱼吃小鱼、桌面弹球、小学生计算器3个作品,小朋友收获不小。关键是小家伙感兴趣,做出来后给家人炫耀了一圈后,兴趣大增,嚷嚷着要做更好玩的。 最近,娃妈从抖音上买了个小猫喝…...
【Linux从入门到精通】进程的控制(进程替换)
本篇文章会对进程替换进行讲解。希望本篇文章会对你有所帮助 文章目录 一、进程替换概念 二、进程替换函数 2、1 execl 2、2 execlp 2、3 execv 2、3 execle 2、4 execve 三、总结 🙋♂️ 作者:Ggggggtm 🙋♂️ 👀 专栏&…...
rancher平台上强制删除pod服务操作
背景: 在日常paas平台运维工作中需要对rancher平台进行巡检的工作,在巡检时发现在rancher管理界面无法删除异常的pod服务, 处理: 像这样的情况就是k8s集群的pod无法通过默认的方式去删除掉pod服务,这时候只能是手工强制…...
【Docker】Docker的通信安全
Docker的通信安全 前言一、Docker 容器与虚拟机的区别1. 隔离与共享2. 性能与损耗 二、Docker 存在的安全问题1. Docker 自身漏洞2. Docker 源码问题 三、Docker 架构缺陷与安全机制1. 容器之间的局域网攻击2. DDoS 攻击耗尽资源3. 有漏洞的系统调用4. 共享 root 用户权限 四、…...
c# 函数中可选参数太多,想设置最后一个参数,又不想修改前面默认参数
C#中,你可以使用命名参数来指定你想要设置的可选参数,而保留其他参数的默认值不变。通过使用命名参数,你可以根据需要选择要为哪些参数提供值,而无需按照它们在函数签名中的顺序提供参数值。 以下是一个示例,演示如何…...
openvino资料(1)
1、c++ - OpenVino model outputs zeroes - Stack Overflow 2、https://chinait-intel.oss-cn-beijing.aliyuncs.com/OpenVINO/Ubuntu20.04%E7%8E%AF%E5%A2%83%E4%B8%8B%E4%BD%BF%E7%94%A8OpenVINO%E9%83%A8%E7%BD%B2BiSeNetV2%E6%A8%A1%E5%9E%8B.pdf 3、c++ - How to cre...
第71篇:某银行外网打点到内网核心区红队评估复盘
Part1 前言 大家好,我是ABC_123。本期分享一篇ABC_123曾经做的针对一家银行的红队评估项目,持续时间两周,难度非常大,但是最终打到了银行核心业务区,今天就复盘一下全过程,希望红蓝双方都能得到一些启示&a…...
网络安全 Day21-数据库知识
数据库知识 1. 什么是数据库2. 为什么需要数据库(分类不清晰)3. 数据库的种类3.1 关系型数据库3.2 NOSQL 数据库3.3 new sql (国产数据库)分布式数据库3.4 云数据库 4. mysql 关系型数据库5. 安装mariadb6. 为mariadb设置密码7. M…...
python测试开发面试常考题:装饰器
目录 简介 应用 第一类对象 装饰器 描述器descriptor 资料获取方法 简介 Python 装饰器是一个可调用的(函数、方法或类),它获得一个函数对象 func_in 作为输入,并返回另一函数对象 func_out。它用于扩展函数、方法或类的行为。 装饰器模式通常用…...
语音同声翻译软件让你不再为语言障碍困扰
从前有一个叫黄俊的小伙子,他有一个大梦想:环游世界!但是,他只会说中文,而去到外国又怎么跟当地人交流呢?为了实现自己的梦想,黄俊开始了寻找能帮他解决问题的捷径。这时,方娜向他介…...
又有一个手艺人震惊了B站用户
飞瓜数据(B站版)【热门视频榜】周榜显示,霸占全站视频流量第一的是来自UP主爱捣鼓的邢志磊发布的作品《我花了半年时间给猫做了个房子》。 视频在一周时间内新增播放1232.2万,新增点赞139.4万。 根据视频详细数据显示,…...
HDFS的设计目标和重要特性
HDFS的设计目标和重要特性 设计目标HDFS重要特性主从架构分块存储机制副本机制namespace元数据管理数据块存储 设计目标 硬件故障(Hardware Failure)是常态,HDFS可能有成百上千的服务器组成,每一个组件都有可能出现故障。因此古见检测和自动快速恢复的H…...
【JMeter】JMeter添加插件
目录 一、前言 二、插件管理器 三、推荐插件 1.Custom Thread Groups (1)Ultmate Thread Group (2)Stepping Thread Group 2.3 Basic Graph 资料获取方法 一、前言 在我们的工作中,我们可以利用一些插件来帮…...
测牛学堂:车载测试面试总结之语音助手相关
车载语音助手的工作原理? 语音助手的工作原理总结下来可以分为4个步骤: 1 通过麦克风采集驾驶员的语音指令 2将语音信号转换为数字信号 3过语音识别技术将语音指令转换为计算机可以理解的指令 4 通过语音合成技术将计算机的回应转换为语音输出 车载…...
Android开发之Fragment动态添加与管理
文章目录 主界面布局资源两个工具Fragment主程序 主界面布局资源 在activity_main.xml中,声明两个按钮备用,再加入一个帧布局,待会儿用来展示Fragment。 <?xml version"1.0" encoding"utf-8"?> <LinearLayo…...
Python爬虫+数据可视化:分析唯品会商品数据
目录 前言数据来源分析1. 明确需求2. 抓包分析:通过浏览器自带工具: 开发者工具 代码实现步骤: 发送请求 -> 获取数据 -> 解析数据 -> 保存数据发送请求解析数据保存数据 数据可视化先读取数据泳衣商品性别占比商品品牌分布占比各大品牌商品售价平均价格各…...
el-tree数据渲染超出省略
el-tree数据渲染超出省略 问题 <el-tree:data"deptOptions":props"defaultProps":expand-on-click-node"false":filter-node-method"filterNode"ref"tree"default-expand-allhighlight-currentnode-click"handleNo…...
若依vue -【 44】
44 服务监控讲解 1 需求 显示CPU、内存、服务器信息、Java虚拟机信息、磁盘状态的信息 2 前端 RuoYi-Vue\ruoyi-ui\src\views\monitor\server\index.vue <script> import { getServer } from "/api/monitor/server";export default {name: "Server&quo…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
Spring Boot 实现流式响应(兼容 2.7.x)
在实际开发中,我们可能会遇到一些流式数据处理的场景,比如接收来自上游接口的 Server-Sent Events(SSE) 或 流式 JSON 内容,并将其原样中转给前端页面或客户端。这种情况下,传统的 RestTemplate 缓存机制会…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
高危文件识别的常用算法:原理、应用与企业场景
高危文件识别的常用算法:原理、应用与企业场景 高危文件识别旨在检测可能导致安全威胁的文件,如包含恶意代码、敏感数据或欺诈内容的文档,在企业协同办公环境中(如Teams、Google Workspace)尤为重要。结合大模型技术&…...
让AI看见世界:MCP协议与服务器的工作原理
让AI看见世界:MCP协议与服务器的工作原理 MCP(Model Context Protocol)是一种创新的通信协议,旨在让大型语言模型能够安全、高效地与外部资源进行交互。在AI技术快速发展的今天,MCP正成为连接AI与现实世界的重要桥梁。…...
k8s业务程序联调工具-KtConnect
概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
QT: `long long` 类型转换为 `QString` 2025.6.5
在 Qt 中,将 long long 类型转换为 QString 可以通过以下两种常用方法实现: 方法 1:使用 QString::number() 直接调用 QString 的静态方法 number(),将数值转换为字符串: long long value 1234567890123456789LL; …...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
MySQL账号权限管理指南:安全创建账户与精细授权技巧
在MySQL数据库管理中,合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号? 最小权限原则…...
