详解Python 序列化数据为JSON或CSV

  • Post category:Python

Python 是一种具有很强大数据处理能力的编程语言,而序列化是将数据结构或对象状态转换为可以存储或传输的形式的过程。在 Python 中,我们可以使用 JSON 或 CSV 序列化数据。

序列化为 JSON

JSON 简介

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它是基于 JavaScript 的一个子集,可以被多种编程语言包括 Python 所使用。JSON 数据既可以在计算机内部传递,也可以在不同网络中传递。

JSON 数据结构包含了两种类型:

  • {} 表示对象,格式为 {key1:value1, key2:value2, …}。
  • [] 表示数组,格式为 [value1, value2, …]。

序列化为 JSON

在 Python 中,可以使用内置的 json 模块将 Python 对象转换为 JSON 字符串,代码示例如下:

import json

# 定义一个 Python 字典
data = {'name': 'Apple', 'color': 'red', 'price': 5}

# 将字典序列化为 JSON 字符串
json_str = json.dumps(data)

# 输出序列化后的 JSON 字符串
print('序列化为 JSON:', json_str)

输出:序列化为 JSON: {"name": "Apple", "color": "red", "price": 5}

反序列化为 Python 对象

同样地,我们也可以使用 json 模块将 JSON 字符串转换为 Python 中的对象,代码示例如下:

import json

# 定义一个 JSON 字符串
json_str = '{"name": "Apple", "color": "red", "price": 5}'

# 将 JSON 字符串反序列化为 Python 对象
data = json.loads(json_str)

# 输出反序列化后的 Python 对象
print('反序列化为 Python 对象:', data)

输出:反序列化为 Python 对象: {'name': 'Apple', 'color': 'red', 'price': 5}

序列化为 CSV

CSV 简介

CSV(Comma-Separated Values)是一种通用的、简单的、易于使用的数据交换格式。CSV 格式是纯文本格式,可以使用任何文本编辑器进行编辑,数据之间使用逗号进行分隔。

CSV 格式适用于存储表格数据,其中每一行表示一条记录,每一列表示一个字段。CSV 格式一般没有数据类型的规定,所以需要在读取时进行类型转换。

序列化为 CSV

Python 内置的 csv 库可以便捷地序列化 Python 对象为 CSV 格式。代码示例如下:

import csv

# 定义一个 Python 列表
data = [{'name': 'Apple', 'color': 'red', 'price': 5},
        {'name': 'Banana', 'color': 'yellow', 'price': 3},
        {'name': 'Grape', 'color': 'purple', 'price': 6}]

# 将列表序列化为 CSV 格式
with open('fruits.csv', 'w') as file:
    writer = csv.writer(file)
    writer.writerow(['name', 'color', 'price'])  # 写入表头信息
    for item in data:
        writer.writerow([item['name'], item['color'], item['price']])

print('序列化为 CSV 完成')

执行后,将在当前目录生成 fruits.csv 文件,其内容为:

name,color,price
Apple,red,5
Banana,yellow,3
Grape,purple,6

反序列化为 Python 对象

同样地,我们也可以使用 csv 库将 CSV 文件反序列化为 Python 中的对象,代码示例如下:

import csv

# 从 CSV 文件读取数据
with open('fruits.csv', 'r') as file:
    reader = csv.DictReader(file)
    data = [row for row in reader]

# 输出反序列化后的 Python 对象
print('反序列化为 Python 对象:', data)

输出:反序列化为 Python 对象: [{'name': 'Apple', 'color': 'red', 'price': '5'}, {'name': 'Banana', 'color': 'yellow', 'price': '3'}, {'name': 'Grape', 'color': 'purple', 'price': '6'}]

注意,CSV 格式没有数据类型的规定,因此反序列化后的数据类型都是字符串类型。我们可以在读取时进行类型转换。

以上就是 Python 序列化数据为 JSON 或 CSV 的完整攻略,通过这些示例代码,我们可以更好地掌握 Python 中序列化的知识点。