在 Python 中,数据序列化指的是将数据结构或对象状态转换为可以存储或传输的格式的过程。反序列化则是将序列化的数据恢复到原始的数据结构。Python 支持多种数据序列化格式,下面是一些常用的格式:
- JSON (JavaScript Object Notation):
- 一种轻量级的数据交换格式,易于人阅读和编写,同时也易于机器解析和生成。
- Python 提供了
json
模块来处理 JSON 数据。 - 示例:使用
json.dumps()
序列化,使用json.loads()
反序列化。
import json
# 序列化
data = {'name': 'John', 'age': 30, 'city': 'New York'}
json_data = json.dumps(data)
# 反序列化
original_data = json.loads(json_data)
- Pickle:
- Python 的内置序列化方式,能够序列化几乎所有的 Python 数据类型。
pickle
模块可以将对象序列化为字节流,也可以从字节流中恢复对象。- 示例:使用
pickle.dumps()
序列化,使用pickle.loads()
反序列化。
import pickle
# 序列化
data = {'name': 'John', 'age': 30, 'city': 'New York'}
pickle_data = pickle.dumps(data)
# 反序列化
original_data = pickle.loads(pickle_data)
- XML (eXtensible Markup Language):
- 一种标记语言,设计用来传输和存储数据。
- Python 提供了如
xml.etree.ElementTree
等模块来解析和操作 XML 数据。
- YAML (YAML Ain't Markup Language):
- 一种易于阅读的数据序列化格式,常用于配置文件。
- Python 可以使用第三方库如
PyYAML
来处理 YAML 数据。
- CSV (Comma-Separated Values):
- 一种简单的文本格式,用于存储表格数据,如电子表格或数据库数据。
- Python 的
csv
模块提供了读取和写入 CSV 文件的功能。
- 二进制格式:
- 对于更复杂的数据结构或者对性能要求较高的场景,可能会用到二进制格式的序列化方法,比如
protobuf
、MessagePack
等。
每种格式都有其优缺点,适合不同的用途和需求。在选择序列化格式时,需要考虑数据的可读性、可移植性、性能以及安全性等因素。