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

  • Post category:Python

一、Python序列化数据为JSON的完整攻略

  1. 什么是JSON
    在介绍Python如何序列化数据为JSON之前,需要先介绍一下JSON,JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,具有易于人阅读和编写的特点。它基于JavaScript编写,但已经成为一种独立于语言的格式。在Python中,我们可以使用json标准库来序列化和反序列化JSON格式的数据。

  2. 序列化为JSON
    将Python数据类型序列化为JSON格式,我们需要使用json.dumps()函数。该函数的参数可以是列表、字典等Python基本数据类型。

下面是一个简单的例子,将一个python中字典类型的数据,序列化为JSON,然后输出到终端。

import json

data = {
    "name": "Micheal Jordan",
    "age": 57,
    "interests": ["basketball", "golf"],
    "champion": ("NBA Championship", 6)
}

json_data = json.dumps(data, indent=4, ensure_ascii=False)
print(json_data)

注意到这个dumps函数有两个可选参数indent和ensure_ascii,indent指定序列化缩进的空格数,ensure_ascii为True则输出ASCII码,为False可以输出中文字符。

  1. 反序列化为Python数据类型
    与序列化操作相对应的是反序列化操作,即将JSON格式的数据反序列化为Python中的数据类型。在Python中,我们可以使用json.loads()函数来完成反序列化。

下面是一个简单的例子,将一个JSON字符串,反序列化为Python中的字典类型数据,然后输出到终端。

import json

json_str = '{"name": "Micheal Jordan", "age": 57, "interests": ["basketball", "golf"], "champion": ["NBA Championship", 6]}'

data = json.loads(json_str)
print(data)
  1. 实例二
import json

# 定义数据
data = {"name": "TOM", "age": 18, "grade": 90}

# 将数据序列化为json格式
json_data = json.dumps(data)

# 将json格式的数据写入json文件中
with open("my_data.json", "w") as f:
    f.write(json_data)

# 从文件中读取json数据
with open("my_data.json", "r") as f:
    json_data = f.read()
    data = json.loads(json_data)

# 输出读取到的数据
print(data)

以上就是Python如何序列化数据为JSON的完整攻略。

二、Python序列化数据为CSV的完整攻略

  1. 什么是CSV
    CSV(Comma-Separated Values)表示逗号分隔值,是一种常用的文本文件格式,用于在一个字符序列中存储表格数据。在Python中,我们可以使用csv标准库来读写CSV格式的文件。

  2. 写入CSV文件
    将Python中的数据类型写入CSV格式的文件,我们需要使用csv.writer()方法。该方法的参数有一个文件对象,以及一个可选的分隔符(默认为逗号分隔符),通过该方法可以将Python中的数据写入到CSV格式的文件中。

下面是一个简单的例子,将一个Python中的二维列表数据,写入到CSV格式的文件中。

import csv

data = [
    ["name", "age", "gender", "score"],
    ["Tom", 20, "male", 90],
    ["Jack", 22, "male", 80],
    ["Mary", 21, "female", 95]
]

with open("student.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerows(data)

注意到在打开文件时,指定了newline参数为””,这是为了避免写入CSV文件时出现多余的空行。

  1. 读取CSV文件
    与写入操作相对应的是读取操作,即读取CSV格式的文件,并将其中的数据转换为Python中的数据类型。在Python中,我们可以使用csv.reader()方法来读取CSV格式的文件。

下面是一个简单的例子,读取一个CSV格式的文件,将其内容转换为Python中的二进制列表。

import csv

with open("student.csv", "r", newline="") as f:
    reader = csv.reader(f)
    data = list(reader)
    print(data)

其中,csv.reader()方法返回的是一个迭代器对象,通过遍历该对象,可以将CSV文件中每一行的数据转换为一个Python中的列表。

  1. 实例二
import csv

# 写入操作
with open("test.csv", "w", newline="") as f:
    writer = csv.writer(f)
    writer.writerow(["姓名", "年龄", "地址"])
    writer.writerow(["Tom", 18, "Shanghai"])
    writer.writerow(["Jerry", 20, "Beijing"])
    writer.writerow(["Lucy", 19, "Guangzhou"])

# 读取操作
with open("test.csv", "r", newline="") as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

以上就是Python序列化数据为CSV的完整攻略。