Python进阶-JSON和YAM操作
一、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)