zoukankan      html  css  js  c++  java
  • Python_PyYaml模块的使用

    YAML是一种比XML和JSON更轻的文件格式,也更简单更强大,它可以通过缩进来表示结构。

    模块安装

    pip install pyyaml   
    # 如果是py2,使用 pip install yaml

    PyYaml的简单使用

    pyyaml就像json、pickle一样,load、dump就足够我们使用了。

    将yaml格式数据转换成dict格式

    比如,有如下格式的yaml文件

    - test:
        id: login
        request:
            url: XXX
            method: POST
    
    
    - test:
        id: get_user_info
        request:
            url: XXX
            method: GET
        validate:
            - eq:
                - [code, 0]
                - [mail, 33@qq.com]

    使用 safe_load 方法转换成dict格式数据

    import yaml
    
    with open("./test.yml") as f:
        msg = f.read()
    
    obj = yaml.safe_load(msg)
    print(obj)

    执行结果如下:

    将dict格式数据转换成yaml格式

    import yaml
    
    msg = [{'test': {'id': 'login', 'request': {'url': 'XXX', 'method': 'POST'}}},
           {'test': {'id': 'get_user_info', 'request': {'url': 'XXX', 'method': 'GET'}, 'validate': [{'eq': [['code', 0], ['mail', '33@qq.com']]}]}}]
    
    yaml_msg = yaml.safe_dump(msg)
    print(yaml_msg)

    执行结果如下:

    YAML的语法规则和数据结构

    YAML 基本语法规则

    1. 大小写敏感
    2. 使用缩进表示层级关系
    3. 缩进时不允许使用Tab键,只允许使用空格。
    4. 缩进的空格数目不重要,只要相同层级的元素左侧对齐即可
    5. # 表示注释,从这个字符一直到行尾,都会被解析器忽略,这个和python的注释一样
    6. 列表里的项用"-"来代表,字典里的键值对用":"分隔

    YAML 支持的数据结构有3种

    1. 对象:键值对的集合
    2. 数组:一组按次序排列的值,序列(sequence) 或 列表(list)
    3. 纯量(scalars):单个的、不可再分的值,如:字符串、布尔值、整数、浮点数、Null、时间、日期

    数据结构示例:

    str: "Big River"    # 字符串
    int: 1548           # 整数
    float: 3.14         # 浮点数
    boolean: true       # 布尔值
    None: null          # 也可以用 ~ 号来表示 null
    time: '2019-11-20T08:47:46.576701+00:00'       # 时间,ISO8601
    date: 2019-11-20 16:47:46.576702                # 日期

    操作代码:

    import yaml
    
    with open("./test.yml", encoding="utf-8") as f:
        msg = f.read()
    
    obj = yaml.safe_load(msg)
    print(obj)

    执行结果:

    其他语法规则

    1. 字符串可以不需要加引号

    2. & 和 * 可用于定义和引用变量

    3. !! 用于强制转换

    4. 3个“-”  用于将一个yaml文件分成多段,这样可以将多个文档写在一个文件中。读取多段yaml格式用 safe_load_all()方法,返回值是可迭代对象。

    yaml文件内容如下:

    int: 123
    str: !!str 123
    ---
    int: 456
    str: abc

    代码如下:

    import yaml
    
    with open("./test.yml", encoding="utf-8") as f:
        msg = f.read()
    
    objs = yaml.safe_load_all(msg)
    print(objs)
    for obj in objs:
        print(obj)

     执行结果如下:

  • 相关阅读:
    WEB前端第四十四课——jQuery框架(二)常用方法
    WEB前端第四十三课——jQuery框架(一)$()函数、添加事件监听
    WEB前端第四十二课——应用案例-瀑布流、递归、代理
    WEB前端第四十一课——简单算法与解析indexof、hash、冒泡排序、递归、JSON
    WEB前端第四十课——正则表达式-RegExp、高级
    WEB前端第三十九课——HTML正则表达式-基础、修饰符、检索模式
    SITE STRUCTURE
    CSS GRID ESSENTIALS
    CSS TYPOGRAPHY
    CSS COLOR
  • 原文地址:https://www.cnblogs.com/testlearn/p/14817144.html
Copyright © 2011-2022 走看看