YAML+PyYAML笔记 9 | PyYAML源码之dump(),dump_all(),safe_dump(),yaml.YAMLObject

news2024/11/16 17:35:24

9 | PyYAML源码之emit,dump,safe_dump,yaml.YAMLObject

  • 1 yaml.dump()
  • 2 yaml.dump()
  • 3 yaml.safe_dump
  • 4 yaml.YAMLObject

1 yaml.dump()

  • 源码:
    在这里插入图片描述

  • 作用:

将Python对象序列化为YAML流。如果stream为None,则返回生成的字符串。

  • 解析:
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/31 
# 文件名称:pyyaml_dump.py
# 作用:yaml.dump()
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml

data = [{"user01": "xiaozhang", "age": 18},
        {"user02": "xiaoli", "age": 20},
        {"user03": "xiaowang", "age": 30}
]

yaml_data = yaml.dump(data)
print(yaml_data)

  • 输出:
- age: 18
  user01: xiaozhang
- age: 20
  user02: xiaoli
- age: 30
  user03: xiaowang

2 yaml.dump()

  • 源码:
    在这里插入图片描述

  • 作用:

将一系列Python对象序列化为YAML流。如果stream为None,则返回生成的字符串。

  • 解析:
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/31 
# 文件名称:pyyaml_dump_all.py
# 作用:yaml.dump_all()
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml
data1 = [{"user01": "xiaozhang", "age": 18},
        {"user02": "xiaoli", "age": 20},
        {"user03": "xiaowang", "age": 30}
]

data2 = {"name1": "xiaoxiao", "age": 99}

data3 = ["beijing", "sahnghai", "guangzhou", "shenzhen"]


yaml_data = yaml.dump_all([data1, data2, data3])
print(yaml_data)

  • 输出:
 - age: 18
  user01: xiaozhang
 - age: 20
  user02: xiaoli
 - age: 30
  user03: xiaowang
---
age: 99
name1: xiaoxiao
---
 - beijing
 - sahnghai
 - guangzhou
 - shenzhen

3 yaml.safe_dump

  • 源码:
    在这里插入图片描述
  • 作用:

将Python对象序列化为YAML流。只生成基本的YAML标签。如果stream为None,则返回生成的字符串。

4 yaml.YAMLObject

  • 源码:
    在这里插入图片描述
  • 作用:

一个可以将自己转储到YAML流的对象,并且从YAML流加载自身。
用元类来注册一个构造器(也就是代码里的 init() 方法),让你把yaml节点转为Python对象实例,用表示器(也就是代码里的 repr() 函数)来让你把Python对象转为yaml节点,

  • 解析:
import yaml

class Person(yaml.YAMLObject):

    yaml_tag = '!person'

    def __init__(self, name, age):

        self.name = name

        self.age = age

    def __repr__(self):

        return '%s(name=%s, age=%d)' % (self.__class__.__name__, self.name, self.age)

james = Person('James', 20)

print (yaml.dump(james))  # Python对象实例转为yaml

lily = yaml.load('!person {name: Lily, age: 19}')

print (lily)  # yaml转为Python对象实例
  • 输出:
!person {age: 20, name: James}

Person(name=Lily, age=19)

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

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

相关文章

无涯教程-jQuery - Tooltip组件函数

小部件工具提示功能可与JqueryUI中的小部件一起使用。Tooltip用于显示提示。 Tooltip - 语法 $( document ).tooltip(); Tooltip - 示例 以下是显示工具提示用法的简单示例- <!doctype html> <html lang"en"><head><meta charset"utf…

【腾讯云 Cloud Studio 实战训练营】在Cloud Studio上使用React实现学生管理系统

一、前言 为了提升办公效率&#xff0c;越来越多的人开始使用云工作站的方法进行“云办公”了&#xff0c;所谓云办公即把传统意义办公场所转移到网络浏览器中&#xff0c;这样做的好处有&#xff1a; 实现真正的移动化办公&#xff0c;不再受设备、时间、地点等的束缚&#…

最近写了10篇Java技术博客【SQL和画图组件】

&#xff08;1&#xff09;Java获取SQL语句中的表名 &#xff08;2&#xff09;Java SQL 解析器实践 &#xff08;3&#xff09;Java SQL 格式化实践 &#xff08;4&#xff09;Java 画图 画图组件jgraphx项目整体介绍&#xff08;一&#xff09; 画图组件jgraphx项目导出…

Java版知识付费 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建

提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售后&#xff0c;专业技术指导&#xff0c;支持PC、APP、H5、小程序多终端同步&#xff0c;支持二次开发…

VsCode与Idea编辑器更换背景图

目录 VsCode Idea VsCode 需要安装background插件 安装完成后&#xff0c;打开设置&#xff0c;搜索background 然后就可以在json文件进行图片设置&#xff0c;透明度等等 Idea 打开File -> Settings 然后找到Appearance &#xff0c; 往下滑&#xff0c;找到BackGround …

Android studio实现Button界面跳转

本教程以界面MainActivity跳转到TwoActivity为例 MainActivity对应layout&#xff1a;R.layout.activity_main TwoActivity*对应layout&#xff1a;R.layout.twolayout 1. 建立MainActivity的java文件 package com.example.myapplication;//界面跳转 所需头文件 import andro…

在人工智能的浪潮下,汽车自动驾驶的新发展新可能

原创 | 文 BFT机器人 相信生活在21世纪的人们&#xff0c;没有人会不知道什么是人工智能。如果你不知道&#xff0c;那么你就是被现社会甩在了身后。人工智能从出现到现在&#xff0c;经历了60年的发展&#xff0c;而如今人工智能更如一股大浪潮&#xff0c;席卷了全国各地&am…

Keil5芯片pack包官网下载与安装

1.进入官网 ARM Keil官网链接&#xff1a;https://www.keil.arm.com/ 2.进入CMSIS Packs中选择需要的pack包 输入需要的芯片型号后回车能显示出所有相关型号&#xff0c;或者在输入栏下方列表中查找&#xff1a; 3.下载所需的安装包 找到所需安装包后&#xff0c;右键在…

kernel32.dll如何修复,快速解决kernel32.dll缺失的方法

Kernel32.dll是Windows操作系统中一个重要的系统文件&#xff0c;对于系统的正常运行至关重要。然而&#xff0c;由于各种原因&#xff0c;用户可能会遇到kernel32.dll文件的缺失问题。今天小编就来给大家详细的介绍一下kernel32.dll这个文件&#xff0c;并且详细的介绍一下ker…

[计算机入门] 回收站

2.10 回收站 回收站是Windows 操作系统中一个特殊的文件夹&#xff0c;通常在桌面上以图标的形式表示。 回收站主要作用是为了保护用户的数据免于被意外删除。使用回收站后用户可以避免错误地彻底删除文件&#xff0c;也可以从回收站中恢复它们。如果没有回收站&#xff0c;在…

vue2.x通过指令实现v-debounce和v-throttle防抖节流的实现,亲测可用。

在vue2.x中&#xff0c;防抖和节流一般是通过引入防抖函数debounce和节流函数throtte&#xff0c;对事件回调进行一层包裹&#xff0c;然后在模板中绑定包裹后的事件回调&#xff0c;这样每个需要用的地方都需要进行防抖&#xff0c;节流函数的导入&#xff0c;事件回调的包裹&…

集成kisso框架springboot解决登录不了问题

前端使用 VUE 框架&#xff0c;要求请求头中传入 token值&#xff0c;获取设置token使用cookie操作 import Cookies from js-cookieconst TokenKey token-c export function getToken() {return Cookies.get(TokenKey) } export function setToken(token) {Cookies.set(Token…

【计算机网络】第四章 网络层(一)

文章目录 第四章 网络层4.1 网络层概述4.2 网络层提供的两种服务4.2.1 小结 第四章 网络层 网络层是计算机网络体系结构中的一个关键层&#xff0c;位于传输层上方、数据链路层下方。它负责将传输层提供的数据分割成适当大小的数据包&#xff0c;并在不同网络之间进行路由选择和…

Segment anything(图片分割大模型)

目录 1.Segment anything 2.补充图像分割和目标检测的区别 1.Segment anything 定义&#xff1a;图像分割通用大模型 延深&#xff1a;可以预计视觉检测大模型&#xff0c;也快了。 进一步理解&#xff1a;传统图像分割对于下图处理时&#xff0c;识别房子的是识别房子的模型…

QtC++ 技术分析4 - 流、d-pointer隐式共享以及容器迭代器

目录 QT 中的流文件系统与底层文件操作文件系统类 QFile QTextStreamQDataStreamQLocale 隐式共享与 d-pointer隐式共享d-pointer 在隐式共享中的应用二进制代码兼容d-pointer 模式实现 Qt 容器及迭代器QTL 概述几种常见的迭代器及其对应类型QTL 容器对应迭代器通用算法函子&am…

特性快闪:使用 Databend 玩转 Iceberg

作者&#xff1a;尚卓燃&#xff08;PsiACE&#xff09;澳门科技大学在读硕士&#xff0c;Databend 研发工程师实习生 Apache OpenDAL(Incubating) Committer https://github.com/PsiACE 几周前&#xff0c;Databricks 和 Snowflake 召开了各自的年度大会&#xff0c;除了今年一…

线程池的使用、工作原理和优势

关于作者&#xff1a;CSDN内容合伙人、技术专家&#xff0c; 从零开始做日活千万级APP。 专注于分享各领域原创系列文章 &#xff0c;擅长java后端、移动开发、人工智能等&#xff0c;希望大家多多支持。 目录 一、导读二、线程池概览2.1 为什么创建和销毁线程开销较大2.2 为什…

tinkerCAD案例:26. Making the Amplifier Body 制作放大器主体(1)

tinkerCAD案例&#xff1a;26. Making the Amplifier Body 制作放大器主体 Project Overview: 项目概况&#xff1a; Music is the universal language! And who doesn’t love jamming out to some sweet tunes with friends? But it’s such a bummer when there are more…

【腾讯云Cloud Studio实战训练营】Cloud Studio 快速搭建学习分享

文章目录 零、前言一、Cloud Studio1.1、Cloud Studio是什么1.2、Cloud Studio的优势 二、实战&#xff1a;快速构建React完成点餐H5页面还原2.1、打开官网2.2、选择React 框架模板2.3、编码部分安装 antd-mobile安装 Less安装 normalize上传项目需要的素材替换App.js主文件 2.…

ChatGPT结合知识图谱构建医疗问答应用 (二) - 构建问答流程

一、ChatGPT结合知识图谱 上篇文章对医疗数据集进行了整理&#xff0c;并写入了知识图谱中&#xff0c;本篇文章将结合 ChatGPT 构建基于知识图谱的问答应用。 下面是上篇文章的地址&#xff1a; ChatGPT结合知识图谱构建医疗问答应用 (一) - 构建知识图谱 这里实现问答的流程…