YAML+PyYAML笔记 5 | YAML流样式、块样式、序列样式、Flow Mappings

简介: YAML+PyYAML笔记 5 | YAML流样式、块样式、序列样式、Flow Mappings

1 流样式

  • 流样式将 YAML 数据表示为一个序列的流;
  • 使用逗号分隔符来表示不同的元素;
  • 使用方括号([])表示序列,使用大括号({})表示映射。
# 嵌套映射
- {
   name: xiaozhang, age: 33, address: {
   city: beijing, education: undergraduate course}}

# 非嵌套映射
- name: xiaozhang, age: 33, address: {
   city: beijing, education: undergraduate course}

# 明确键值对
- {
   name: xiaozhang, age: 33, city: beijing, education: undergraduate course}

2 块样式

  • 每个语句块都以一个连字符“-”开头;
  • 可以包含任意数量的子语句块;
  • 每个子语句块都比父语句块多两个空格;
  • 表示:
 - 语句块:
 - 子语句块1
 - 子语句块2
 - ...
 - 语句块:
 - 子语句块1
 - 子语句块2
 - ...
  • 示例:
# 块样式示例

 - name: 北京
  code: 110000
  districts:
    - name: 东城区
      code: 110101
    - name: 西城区
      code: 110102
    - name: 朝阳区
      code: 110105
    - name: 丰台区
      code: 110106
 - name: 西安市
  code: 610100
  districts:
    - name: 新城区
      code: 610102
    - name: 碑林区
      code: 610103
    - name: 莲湖区
      code: 610104
    - name: 灞桥区
      code: 610111
    - name: 未央区
      code: 610112
    - name: 雁塔区
      code: 610113
    - name: 阎良区
      code: 610114
    - name: 临潼区
      code: 610115
    - name: 长安区
      code: 610116
    - name: 高陵区
      code: 610117
    - name: 鄠邑区
      code: 610118
    - name: 蓝田县
      code: 610122
    - name: 周至县
      code: 610124
  • 解析:
[{
   'name': '北京', 'code': 110000, 'districts': [{
   'name': '东城区', 'code': 110101}, {
   'name': '西城区', 'code': 110102}, {
   'name': '朝阳区', 'code': 110105}, {
   'name': '丰台区', 'code': 110106}]}, {
   'name': '西安市', 'code': 610100, 'districts': [{
   'name': '新城区', 'code': 610102}, {
   'name': '碑林区', 'code': 610103}, {
   'name': '莲湖区', 'code': 610104}, {
   'name': '灞桥区', 'code': 610111}, {
   'name': '未央区', 'code': 610112}, {
   'name': '雁塔区', 'code': 610113}, {
   'name': '阎良区', 'code': 610114}, {
   'name': '临潼区', 'code': 610115}, {
   'name': '长安区', 'code': 610116}, {
   'name': '高陵区', 'code': 610117}, {
   'name': '鄠邑区', 'code': 610118}, {
   'name': '蓝田县', 'code': 610122}, {
   'name': '周至县', 'code': 610124}]}]

3 序列样式

  • 块样式和流样式都可以用来表示序列;
  • 块样式可以使序列更具可读性,而流样式可以在一行内表示整个序列;
  • 序列样式可以方便地表示列表、数组和集合等数据结构。

4 Flow Mappings

  • Flow Mappings是一种可能在一行甚至更少的空间内表示一个非常复杂的数据结构的方式;
  • 这个特性可用于表达许多不同的数据结构,包括像哈希表,嵌套列表和更多;
  • 通常用花括号来定义,每个键和值都用冒号隔开,并用逗号分隔;
  • 示例:
{
    name: xiaowang, age: 66, city: beijing }
{
    name: xiaowang, age: 66, hobbies: [hiking, cooking, fishing], address: {
    city: beijing, education: undergraduate course } }
  • 序列化Flow Mappings
# -*- coding:utf-8 -*-
# 作者:虫无涯
# 日期:2023/7/28 
# 文件名称:yaml_xvlie.py
# 作用:序列化
# 联系:VX(NoamaNelson)
# 博客:https://blog.csdn.net/NoamaNelson

import yaml

data = {
   'name': 'xiaowang',
        'age': 66,
        'hobbies': ['hiking', 'cooking', 'fishing'],
        'address': {
    'city': 'beijing', 'education': 'undergraduate course' } }

data1 = yaml.dump(data, default_flow_style=True)
print(data1)
{
   address: {
   city: beijing, education: undergraduate course}, age: 66, hobbies: [hiking,
    cooking, fishing], name: xiaowang}
目录
相关文章
|
6月前
|
机器学习/深度学习 计算机视觉 Python
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
深度学习项目中在yaml文件中定义配置,以及使用的python的PyYAML库包读取解析yaml配置文件
235 0
|
安全 Python
YAML+PyYAML笔记 8 | PyYAML源码之full_load(),full_load_all(),safe_load(),unsafe_load(),unsafe_load_all()
YAML+PyYAML笔记 8 | PyYAML源码之full_load(),full_load_all(),safe_load(),unsafe_load(),unsafe_load_all()
158 1
|
Python
YAML+PyYAML笔记 7 | PyYAML源码之yaml.compose_all(),yaml.load(),yaml.load_all()
YAML+PyYAML笔记 7 | PyYAML源码之yaml.compose_all(),yaml.load(),yaml.load_all()
82 2
|
Python
YAML+PyYAML笔记 9 | PyYAML源码之dump(),dump_all(),safe_dump(),yaml.YAMLObject
YAML+PyYAML笔记 9 | PyYAML源码之dump(),dump_all(),safe_dump(),yaml.YAMLObject
143 0
YAML+PyYAML笔记 4 | YAML字符流、节点属性、块伸缩标头使用
YAML+PyYAML笔记 4 | YAML字符流、节点属性、块伸缩标头使用
76 0
YAML+PyYAML笔记 3 | YAML集合、结构、标量、标记使用
YAML+PyYAML笔记 3 | YAML集合、结构、标量、标记使用
112 0
|
5月前
|
JSON Kubernetes API
深入理解Kubernetes配置:编写高效的YAML文件
深入理解Kubernetes配置:编写高效的YAML文件
|
8月前
|
存储 运维 Serverless
函数计算产品使用问题之在YAML文件中配置了环境变量,但在PHP代码中无法读取到这些环境变量,是什么原因
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
116 1
|
4月前
|
Kubernetes 应用服务中间件 nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
k8s学习--YAML资源清单文件托管服务nginx
|
4月前
|
Kubernetes Docker Perl
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
k8s常见故障--yaml文件检查没有问题 pod起不来(一直处于创建中)
149 1