编程语言
首页 > 编程语言> > 使用Python处理yaml格式的数据简单到爆!

使用Python处理yaml格式的数据简单到爆!

作者:互联网

一、思考:question::grey_question:

1.什么是yaml?

 

Python资源共享群:626017123

2.Python中哪些模块可以处理yaml?

 

 

 

 

 

 

二、基础操作:hammer::hammer:

 

 

 

 

 

 

1.安装ruamel.yaml

2.基本用法

# 外号
---
user:
  - 可优
  - keyou
  - 小可可
  - 小优优
# 爱人
lovers:
  - 柠檬小姐姐
  - 橘子小姐姐
from ruamel.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', encoding='utf-8') as file:
    data = yaml.load(file)  # 为列表类型
print(f"data:\n{data}")

 

 

 

 

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)
user:
  name: 可优
  age: 17
  money:
  gender: true
lovers:
- 柠檬小姐姐
- 橘子小姐姐
- 小可可

三、复杂案例演练:hammer::hammer:

 

 

 

 

 

 

1.将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: []

四、总结:bulb::bulb:

 

 

 

 

 

 

 

 

 

 

 

标签:lovers,小姐姐,YAML,Python,yaml,User,格式,user
来源: https://blog.csdn.net/Pythoncxy/article/details/100925562