Python进阶-JSON和YAM操作

TOC

一、JSON 数据解析

1.JSON数据解码和编码

json.loads(): 对数据进行解码。
json.dumps(): 对数据进行编码。
解码就是将json格式的字符串或者字典之类的数据解析成json数据,编码则是相反。
使用实例:

import json

# 定义一个字典
data = {
'id': 1,  
'name': '张三',  
'url': 'https://www.zhangsan.com'  
}
# 将字典转换为JSON  
json_data = json.dumps(data)  
print('Python原始数据:', repr(data), '\n', 'JSON对象:', json_data)  
# 将JSON数据转化成字典  
new_data = json.loads(json_data)  
print('读取name的值为:', new_data['name'], '\n', '网络地址url为:', new_data['url'])

2.处理文件里的JSON数据

写入json数据到文件

import json

data = {
'id': 1,  
'name': '张三',  
'url': 'https://www.zhangsan.com'  
}
with open('data.json', 'w') as f:
    json.dump(data, f)

读取文件中json数据(一定要符合json格式)

import json

with open('data.json', 'r') as f:
    data = json.load(f)
print(type(data), data)

3.美化json数据文件格式

使用方法:

json.dump(data, file, indent=2, ensure_ascii=False)

使用实例:

import json

data = {
'id': 1,  
'name': '张三',  
'url': 'https://www.zhangsan.com'  
}
with open(f'format_data.json', 'w') as file:
    json.dump(data, file, indent=2, ensure_ascii=False)  
    file.close()

二、YAML数据操作

PyYAML模块

PyYAML模块是一个常用的 YAML 解析库,功能强大且简单易用。它支持 YAML 的基本操作,包括加载(读取 YAML 文件或字符串)和转储(将数据写入 YAML 文件或字符串)。
安装yaml模块

pip install PyYAML

1.简单操作

import yaml

yaml_data = """
name: Alice
age: 25
is_student: false
languages:
  - Python
  - JavaScript
  - Go
"""
# 加载YAML数据
data = yaml.safe_load(yaml_data) print("加载的 Python 对象:", data)
print(data)
# 转储为 YAML 格式字符串
new_yaml_data = yaml.safe_dump(data, sort_keys=False)
print("\n转储为 YAML 格式:\n", new_yaml_data)

2.处理文件的yaml数据

test.yaml文件中的内容为:

name: Alice
info:
  age: 25
  sex: woman
is_student: false
languages:
  - Python
  - JavaScript
  - Go

使用实例:

import yaml  
  
# 读取YAML文件  
with open('test.yaml', 'r') as f:  
    data = yaml.load(f, Loader=yaml.FullLoader)  
    f.close()  
print('test.yaml文件的内容:\n', data)
print('输出name字段', data['name'])
  
# 修改info下的age字段
data['info']['age'] = 27
print('输出info字段', data['info'])
# 写入YAML文件  
with open('example.yaml', 'w') as file:
    yaml.dump(data, file)

ruamel.yaml模块

PyYAML模块保存数据到yaml文件时会出现顺序打乱的现象,ruamel.yaml提供了更强大的功能,适合需要编辑、保留注释或顺序的复杂场景。
安装ruamel.yaml模块

pip install ruamel.yaml

使用实例:

from ruamel.yaml import YAML

yaml = YAML()
# 从 YAML 文件加载数据
with open('test.yaml', 'r') as file:
    data = yaml.load(file)
# 写入 YAML 文件
with open('new-test.yaml', 'w') as file:
    yaml.dump(data, file)