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

  • Post category:Python

下面是Python序列化数据为JSON或CSV的完整攻略:

序列化为JSON格式

什么是JSON

JSON(JavaScript Object Notation)是一种轻量级的数据交换格式。它基于JavaScript语言的一个子集,但是具有独立于编程语言和平台的特性,因此也被广泛应用于各种编程语言中。

Python中序列化为JSON

Python中有一个内置的json库,可以用来实现将Python对象序列化为JSON格式的字符串。

下面是一个示例代码,将Python字典对象序列化为JSON字符串,并打印输出:

import json

data = {
    'name': '张三',
    'age': 18,
    'gender': 'male'
}

json_str = json.dumps(data)
print(json_str)

输出结果为:

{"name": "\u5f20\u4e09", "age": 18, "gender": "male"}

可以看到,输出结果是一个JSON格式的字符串,其中中文字符被转义,这是因为JSON规定了只能使用ASCII字符集。

如果希望输出结果中的中文字符不被转义,可以在dumps函数中指定ensure_ascii参数为False:

json_str = json.dumps(data, ensure_ascii=False)
print(json_str)

输出结果为:

{"name": "张三", "age": 18, "gender": "male"}

JSON字符串反序列化为Python对象

要将一个JSON格式的字符串反序列化为Python对象,在Python中也可以利用上面提到的json库中的loads函数。

下面是一个示例代码,将上面的JSON格式的字符串反序列化为Python字典对象,并打印输出:

json_str = '{"name": "张三", "age": 18, "gender": "male"}'

data = json.loads(json_str)
print(data)

输出结果为:

{'name': '张三', 'age': 18, 'gender': 'male'}

序列化为CSV格式

什么是CSV

CSV(Comma-Separated Values)是一种常见的文本格式,用于表格数据的存储和交换。

CSV格式的数据是由若干行和若干列组成的,每一行表示一个数据记录,每一列表示一个数据字段,相邻的字段使用逗号(,)进行分隔。

Python中序列化为CSV

Python中可以使用csv库来实现将数据序列化为CSV格式的文件。

下面是一个示例代码,将Python列表对象序列化为CSV格式的文件,并进行读取和打印输出:

import csv

data = [
    ['name', 'age', 'gender'],
    ['张三', 18, 'male'],
    ['李四', 20, 'female'],
    ['王五', 22, 'male']
]

# 写入CSV文件
with open('data.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(data)

# 读取CSV文件
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

输出结果为:

['name', 'age', 'gender']
['张三', '18', 'male']
['李四', '20', 'female']
['王五', '22', 'male']

可以看到,CSV文件中每行数据被读取为一个列表对象,并且整个文件的数据也被保存在一个列表对象中。

另外需要注意的是,csv库提供了一些其他的函数来实现更加灵活的CSV文件读写操作,比如DictReader和DictWriter函数,它们可以在读写CSV文件时使用字典格式的数据,并且可以指定数据字段的顺序等。