一、学前花絮

前面的文章学习了Python Json文件的处理、一般文件的读取方法,本文针对csv文件的处理进行说明。和Json文件一样,csv文件也是很常用的文件格式。它的特点是以逗号为分隔符的文本文件,其实可以直接用Excel表格打开。我们会看到csv就是一种二维表格数据,第一行一般是表头标题,后面的行就是数据内容了。

而如果你学过mysql数据库,那么csv也可以被认为是一张数据库表,第一行可认为是数据库表的表结构定义(多少字段、字段类型)。通过Python语言很容易把csv文件导入到mysql数据库中。

二、Python csv 模块

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

CSV 文件由纯文本组成,每一行代表表格中的一行数据,而每一列则通过逗号(或其他分隔符)分隔。

CSV 文件通常用于数据交换,因为它简单且易于处理。

Python 提供了一个内置的 csv 模块,用于读取和写入 CSV 文件。这个模块简化了处理 CSV 文件的过程,使得开发者可以轻松地操作表格数据。

2.1. 写入 CSV 文件

要写入 CSV 文件,可以使用 csv.writer 对象。以下是一个示例:

csv.writer对象

代码解释:

open(‘output.csv’, mode=’w’, encoding=’utf-8′, newline=”):以写入模式打开名为 output.csv 的文件,并指定编码为 UTF-8。newline=” 用于避免在 Windows 系统中出现空行。

csv.writer(file):创建一个 csv.writer 对象,用于写入文件内容。

csv_writer.writerow(row):将每一行数据写入文件。

2.2读取 CSV 文件

要读取 CSV 文件,可以使用 csv.reader 对象。以下是一个简单的示例:

csv.reader对象

代码解释:

open(‘data.csv’, mode=’r’, encoding=’utf-8′):以只读模式打开名为 data.csv 的文件,并指定编码为 UTF-8。

csv.reader(file):创建一个 csv.reader 对象,用于读取文件内容。

for row in csv_reader:逐行读取文件内容,每一行数据会被解析为一个列表。

执行结果如下:

输出结果

以上输出可以看出,以列表形式读取数据。

2.3 使用字典读取和写入 CSV 文件

csv 模块还提供了 DictReader 和 DictWriter 类,它们可以将 CSV 文件的每一行解析为字典,或者将字典写入 CSV 文件。

使用 DictReader 读取 CSV 文件:

DictReader读取

输出结果如下:

输出结果

对比2、3的输出结果,我们可以看出2是保留了data文件的csv原始风格(第一行是标题,后面是数据);而3对于用户显得更友好,解释了数据的含义,本质上是把第一行当做key,其他行当做value。

使用 DictWriter 写入 CSV 文件:

DictWriter写入

2.4 csv 模块核心方法:

csv.reader()

从文件对象读取 CSV 数据

reader = csv.reader(file)

csv.writer()

将数据写入 CSV 文件

writer = csv.writer(file)

csv.DictReader()

将 CSV 行读取为字典(带表头)

Python学习【29】:Python csv 模块

dict_reader = csv.DictReader(file)

csv.DictWriter()

将字典写入 CSV 文件(需指定字段名)

dict_writer = csv.DictWriter(file, fieldnames)

csv.register_dialect()

注册自定义 CSV 格式(如分隔符)

csv.register_dialect(‘mydialect’, delimiter=’|’)

csv.unregister_dialect()

删除已注册的方言

csv.unregister_dialect(‘mydialect’)

csv.list_dialects()

列出所有已注册的方言

print(csv.list_dialects())

csv.reader 和 csv.writer 对象常用方法:

__next__()

迭代读取下一行(或使用 for 循环)

reader

writerow(row)

写入单行数据

writer

writerows(rows)

写入多行数据(列表的列表)

writer

csv.DictReader 和 csv.DictWriter 对象特性:

fieldnames

字段名列表(DictReader 自动从首行获取)

dict_reader.fieldnames

writeheader()

写入表头行(DictWriter 专用)

dict_writer.writeheader()

三、小结

本章内容针对csv文件的读写进行了专题讨论,csv文件是大数据工程项目中非常重要的一种数据,可以认为是一种二维表格数据,也可以认为是半结构化数据。介于结构化数据与非结构化数据之间。

让我们保持学习热情,多做练习。我们下期再见!

快乐男孩

#python#