zoukankan      html  css  js  c++  java
  • 使用python处理yaml格式的数据

    原链接:https://www.cnblogs.com/keyou1/p/11510975.html

    1、安装ruamel.yaml

       1.1.使用官方pypi源来安装

    • pip install ruamel.yaml

     1.2.使用豆瓣pypi源来安装(推荐)

    • pip install -i https://pypi.douban.com/simple ruamel.yaml

    2、基本方法

      2.1读取yaml文件中的内容

            在项目根目录下创建user_info.yaml文件

    # 外号
    ---
    user:
      - 可优
      - keyou
      - 小可可
      - 小优优
    
    # 爱人
    lovers:
      - 柠檬小姐姐
      - 橘子小姐姐

    将yaml格式的数据转化为python中的数据类型

    from ruamel.yaml import YAML
    import yaml
    
    # 第一步: 创建YAML对象
    #yaml = YAML(typ='safe')
    
    # typ: 选择解析yaml的方式
    #  'rt'/None -> RoundTripLoader/RoundTripDumper(默认)
    #  'safe'    -> SafeLoader/SafeDumper,
    #  'unsafe'  -> normal/unsafe Loader/Dumper
    #  'base'    -> baseloader
    
    # 第二步: 读取yaml格式的文件
    with open('user_info.yaml',mode='r') as file:
        data = yaml.safe_load(file)  # 为列表类型
        print(data)  

        运行结果:

     2.2、将Python中的字典或者列表转化为yaml格式的数据

    from ruamel.yaml import YAML
    
    # 第一步: 创建YAML对象
    # yaml = YAML(typ='safe')
    yaml = YAML()
    
    # 第二步: 将Python中的字典类型数据转化为yaml格式的数据
    src_data = {'user': {'name': '可优', 'age': 17, 'money': None, 'gender': True},
                'lovers': ['柠檬小姐姐', '橘子小姐姐', '小可可']
                }
    
    with open('new_user_info.yaml', mode='w', encoding='utf-8') as file:
        yaml.dump(src_data, file)
    

    生成的new_user_info.yaml文件:

    user:
      name: 可优
      age: 17
      money:
      gender: true
    lovers:
    - 柠檬小姐姐
    - 橘子小姐姐
    - 小可可
    

    2.3.将Python中的对象转化为yaml格式数据

    from ruamel.yaml import YAML
    
    
    # 第一步: 创建需要保存的User类
    class User:
        """
        定义用户类
        """
        def __init__(self, name, age, gender):
            self.name, self.age, self.gender = name, age, gender
            self.lovers = []
    
        def loved(self, user):
            self.lovers.append(user)
    
    
    # 第二步: 创建YAML对象
    yaml = YAML()
    
    # 第三步: 注册用户类
    yaml.register_class(User)
    
    # 第四步: 保存用户对象
    keyou = User("可优", 17, "油腻男")
    lemon_little_girl = User("柠檬小姐姐", 16, "素颜小仙女")
    orange_little_girl = User("橘子小姐姐", 18, "不会PS的靓妹")
    keyou.loved(lemon_little_girl)
    keyou.loved(orange_little_girl)
    
    with open('lovers.yaml', mode='w', encoding='utf-8') as file:
        yaml.dump([keyou], file)
    

    生成的lovers.yaml文件:

    - !User
      name: 可优
      age: 17
      gender: 油腻男
      lovers:
      - !User
        name: 柠檬小姐姐
        age: 16
        gender: 素颜小仙女
        lovers: []
      - !User
        name: 橘子小姐姐
        age: 18
        gender: 不会PS的靓妹
        lovers: []
  • 相关阅读:
    这一次搞懂Spring自定义标签以及注解解析原理
    为什么要谨慎使用Arrays.asList、ArrayList的subList?
    【踩坑系列】使用long类型处理金额,科学计数法导致金额转大写异常
    小心使用 Task.Run 解惑篇
    小心使用 Task.Run 续篇
    为什么要小心使用 Task.Run
    Visual Studio 调试技巧之即时窗口的妙用
    审计系统的一剂良方——事件溯源
    [C#.NET 拾遗补漏]13:动态构建LINQ查询表达式
    再聊 Blazor,它是否值得你花时间学习
  • 原文地址:https://www.cnblogs.com/hl-2030/p/14446994.html
Copyright © 2011-2022 走看看