【Python系列】Python中的YAML数据读取与解析

这篇具有很好参考价值的文章主要介绍了【Python系列】Python中的YAML数据读取与解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。
【Python系列】Python中的YAML数据读取与解析,s19 python,python,开发语言

  • 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老
  • 导航
    • 檀越剑指大厂系列:全面总结 java 核心技术点,如集合,jvm,并发编程 redis,kafka,Spring,微服务,Netty 等
    • 常用开发工具系列:罗列常用的开发工具,如 IDEA,Mac,Alfred,electerm,Git,typora,apifox 等
    • 数据库系列:详细总结了常用数据库 mysql 技术点,以及工作中遇到的 mysql 问题等
    • 懒人运维系列:总结好用的命令,解放双手不香吗?能用一个命令完成绝不用两个操作
    • 数据结构与算法系列:总结数据结构和算法,不同类型针对性训练,提升编程思维,剑指大厂

非常期待和您一起在这个小小的网络世界里共同探索、学习和成长。💝💝💝 ✨✨ 欢迎订阅本专栏 ✨✨

引言

在现代软件开发中,配置文件和数据序列化是非常常见的需求。YAML 是一种人类可读的数据序列化格式,它使用简洁的语法和结构来表示数据。在 Python 中,我们可以使用第三方库 PyYAML 来读取和解析 YAML 数据。本文将介绍如何使用 Python 读取和解析 YAML 数据,并探讨 YAML 的一些高级特性和最佳实践。

【Python系列】Python中的YAML数据读取与解析,s19 python,python,开发语言

一.YAML 简介

YAML 是一种轻量级的数据序列化格式,它的全称是"YAML Ain’t Markup Language",强调了它不是一种标记语言。YAML 的设计目标是易读易写,并且与多种编程语言兼容。YAML 使用缩进和符号来表示数据结构,例如列表、字典和标量值。

下面是一个简单的 YAML 示例:

person:
  name: John Smith
  age: 30
  hobbies:
    - reading
    - hiking

在这个示例中,我们定义了一个名为"person"的字典,它包含了名字、年龄和爱好。通过缩进和冒号来表示层级关系,通过连字符和空格来表示列表。

二.使用 PyYAML 读取 YAML 数据

在 Python 中,我们可以使用 PyYAML 库来读取和解析 YAML 数据。首先,我们需要安装 PyYAML 库,可以使用 pip 命令进行安装:

pip install pyyaml

安装完成后,我们可以使用以下代码读取 YAML 文件并解析其中的数据:

import yaml

filename = 'data.yaml'

try:
    with open(filename, 'r', encoding="utf-8") as file:
        yaml_data = yaml.safe_load(file)
        print(yaml_data)
except FileNotFoundError:
    print(f"File '{filename}' not found.")
except yaml.YAMLError as e:
    print(f"Error while loading YAML: {e}")
except Exception as e:
    print(f"An error occurred: {e}")

在上述代码中,我们使用open函数打开 YAML 文件,并通过yaml.safe_load函数加载 YAML 数据。safe_load函数将 YAML 数据解析为 Python 对象,通常是字典或列表。我们可以直接打印 Python 对象来查看解析结果。

需要注意的是,我们使用了异常处理来捕获可能发生的错误,例如文件不存在的FileNotFoundError和 YAML 加载错误的yaml.YAMLError。这样可以帮助我们更好地进行故障排查和错误处理。

三.访问 YAML 数据

一旦我们将 YAML 数据解析为 Python 对象,我们就可以像操作普通字典或列表一样访问其中的数据。例如,假设我们有以下 YAML 数据:

person:
  name: John Smith
  age: 30
  hobbies:
    - reading
    - hiking

使用 PyYAML 解析后,我们可以通过以下方式访问数据:

print(yaml_data['person']['name'])  # 输出:John Smith
print(yaml_data['person']['age'])  # 输出:30
print(yaml_data['person']['hobbies'])  # 输出:['reading', 'hiking']

通过索引和键名的方式,我们可以深入访问 YAML 数据的不同层级和字段。

四.YAML 的高级特性

除了基本的数据结构,YAML 还支持一些高级特性,例如引用、多行文本和自定义类型。这些特性使得 YAML 在表示复杂数据结构和配置文件时非常灵活和强大。

4.1 引用

YAML 允许使用&符号创建引用,以及使用*符号引用已经定义的值。这在避免重复定义和共享数据时非常有用。下面是一个示例:

person: &person_ref
  name: John Smith
  age: 30

employee:
  <<: *person_ref
  position: Engineer

在这个示例中,我们首先定义了一个名为person的字典,并使用&person_ref将其命名为引用。然后,在employee字典中使用<<: *person_ref引用了person字典的内容。这样,employee字典将继承person字典的所有键值对。

4.2 多行文本

YAML 允许使用|符号表示多行文本,以保持文本的格式和结构。这在表示长文本、配置说明和代码块时非常有用。以下是一个示例:

description: |
  This is a multi-line
  text block in YAML.
  It preserves line breaks
  and indentation.

在这个示例中,我们使用|符号将多行文本定义为description字段的值。通过保持原始的换行符和缩进,我们可以在 YAML 中轻松地表示多行文本。

4.3 自定义类型

YAML 允许使用自定义类型和标签来表示特定的数据结构和含义。通过定义自定义类型,我们可以更好地描述和解析特定的数据。以下是一个示例:

---
- !!python/object:__main__.Person
  name: John Smith
  age: 30

在这个示例中,我们使用!!python/object:__main__.Person标签来表示一个自定义类型Person。这样,我们可以在加载 YAML 数据时将其解析为 Python 中的自定义对象。

【Python系列】Python中的YAML数据读取与解析,s19 python,python,开发语言

五.YAML 最佳实践

在使用 YAML 时,以下是一些最佳实践和注意事项:

5.1 使用缩进和冒号

YAML 使用缩进和冒号来表示层级关系和键值对。在编写 YAML 时,确保正确使用缩进和冒号,以保持数据的层次结构和结构清晰。

5.2 嵌套和层级

YAML 支持嵌套的数据结构,例如字典中嵌套字典、列表中嵌套列表等。在编写嵌套数据时,注意保持正确的层级关系,以避免解析错误。

5.3 引用和共享数据

使用引用和&*符号可以避免重复定义和共享数据。这样可以使 YAML 文件更简洁、易读和易维护。

5.4 注释

YAML 支持使用#符号添加注释。在编写 YAML 时,可以使用注释来提供额外的说明、解释和文档。

5.5 错误处理

在读取和解析 YAML 数据时,始终进行错误处理。捕获可能发生的异常,例如文件不存在、格式错误等,并提供相应的错误提示和处理。

六.结论

本文介绍了如何使用 Python 读取和解析 YAML 数据。我们首先简要介绍了 YAML 的基本概念和语法规则,然后演示了如何使用 Python 中的 PyYAML 库读取 YAML 文件,并将其解析为 Python 对象。文章还讨论了 YAML 的一些高级特性和最佳实践,以帮助读者更好地理解和应用 YAML 数据。

通过使用 YAML,我们可以轻松地表示和传输各种数据,例如配置文件、数据结构和文本内容。借助 Python 和 PyYAML 库的强大功能,我们可以

觉得有用的话点个赞 👍🏻 呗。
❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

【Python系列】Python中的YAML数据读取与解析,s19 python,python,开发语言文章来源地址https://www.toymoban.com/news/detail-844531.html

到了这里,关于【Python系列】Python中的YAML数据读取与解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 利用python读取xml中的数据

    目录 xml例子 方法一:利用cElementTree 方法二:利用read_xml() 方法三:利用pd.json_normalize() 如果 shape 、degrees、sides 不是按照一定规律排列,这样取数据容易出错。 比如将最后一组 degrees、 shape 、sides , 输出结果便会变成: 将xml转为类似json的格式 利用pd.json_normalize() 读到dataf

    2024年02月06日
    浏览(28)
  • Python爬虫之读取数据库中的数据

    之前几篇我们一直在研究如何从网站上快速、方便的获取数据,并将获取到的数据存储在数据库中。但是将数据存储在数据中并不是我们的目的,获取和存储数据的目的是为了更好的利用这些数据,利用这些数据的前提首先需要从数据库按一定的格式来读取数据,这一篇主要

    2023年04月13日
    浏览(50)
  • 【Python系列】读取 Excel 第一列数据并赋值到指定列

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年04月15日
    浏览(34)
  • Python与Pytorch系列(二) 本文(1.8万字) | 解析Opencv, Matplotlib, PIL | 三者之间的转换 | 三者对JPG和PNG读取和写入 |

    点击进入专栏: 《人工智能专栏》 Python与Python | 机器学习 | 深度学习 | 目标检测 | YOLOv5及其改进 | YOLOv8及其改进 | 关键知识点 | 各种工具教程 推荐网站 : OpenCV Matplotlib Pillow opencv的基本图像类型可以和numpy数组相互转化,因此可以直接调用 torch.from_numpy(img) 将图像转换成 t

    2024年02月03日
    浏览(76)
  • python实现读取文件中的视频数据并实时展示

    要实现读取文件中的视频数据并实时展示,可以使用OpenCV库。以下是一个简单的示例代码: 在这个示例中,我们首先使用`cv2.VideoCapture()`函数打开视频文件。然后,我们使用一个无限循环来逐帧读取视频,并在窗口中显示当前帧。最后,我们释放资源并关闭窗口。注意,在循

    2024年02月12日
    浏览(48)
  • 用Python的pandas读取excel文件中的数据

    hello呀!各位铁子们大家好呀,今天呢来和大家聊一聊用Python的pandas读取excel文件中的数据。 使用pandas的 read_excel() 方法,可通过文件路径直接读取。注意到,在一个excel文件中有多个sheet,因此,对excel文件的读取实际上是读取指定文件、并同时指定sheet下的数据。可以一次读

    2024年02月02日
    浏览(55)
  • 【AI系列】使用 Python 解析和输出成功的问答对 JSON 数据

    💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学习,不断总结,共同进步,活到老学到老 导航 檀越剑指大厂系列:全面总

    2024年04月16日
    浏览(78)
  • 【车载开发系列】UDS诊断---读取DTC信息($0x19)

    UDS可以简单理解为一套完整的通讯协议框架,其目的在于规范各种行车电脑和ECU之间的通讯。0x19服务其实是读取DTC信息的服务。 1)DTC概念 故障存储相关的0x19和0x14服务。 当系统检测到了一个错误或者是一个故障发生的时候,会将相对应的数值故障码进行存储,那么这个对应

    2024年01月15日
    浏览(54)
  • Java读取yaml数据

    YAML 数据结构可以用类似大纲的缩排方式呈现,结构通过缩进来表示,连续的项目通过减号“-”来表示,map结构里面的key/value对用冒号“:”来分隔。 下面介绍两种 Java 读取 Yaml 内容的方式: 忽略注释的方式,读写会导致注释丢失 在pom.xml加入snakeyaml依赖: 具体java代码: 支

    2024年02月15日
    浏览(36)
  • python读取并解析邮箱邮件,读取邮件主题、内容、时间

    python读取邮件时,首先需要邮箱开启IMAP服务或POP服务,通常在邮箱的设置界面可以开启,不过默认似乎是不开启的。 IMAP是什么?IMAP和POP有什么区别?:https://open.work.weixin.qq.com/help2/pc/19887?person_id=1 以腾讯邮箱为例,在开启imap服务同一个界面下,会看到相关配置: 这里我们

    2024年01月21日
    浏览(46)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包