前面的文章学习了Python Json文件的处理、一般文件的读取方法,本文针对csv文件的处理进行说明。和Json文件一样,csv文件也是很常用的文件格式。它的特点是以逗号为分隔符的文本文件,实则可以直接用Excel表格打开。我们会看到csv就是一种二维表格数据,第一行一般是表头标题,后面的行就是数据内容了。
而如果你学过mysql数据库,那么csv也可以被认为是一张数据库表,第一行可认为是数据库表的表结构定义(多少字段、字段类型)。通过Python语言很容易把csv文件导入到mysql数据库中。
二、Python csv 模块
CSV(Comma-Separated Values)文件是一种常见的文件格式,用于存储表格数据。
CSV 文件由纯文本组成,每一行代表表格中的一行数据,而每一列则通过逗号(或其他分隔符)分隔。
CSV 文件一般用于数据交换,由于它简单且易于处理。
Python 提供了一个内置的 csv 模块,用于读取和写入 CSV 文件。这个模块简化了处理 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):将每一行数据写入文件。
要读取 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:逐行读取文件内容,每一行数据会被解析为一个列表。
执行结果如下:

输出结果
以上输出可以看出,以列表形式读取数据。
csv 模块还提供了 DictReader 和 DictWriter 类,它们可以将 CSV 文件的每一行解析为字典,或者将字典写入 CSV 文件。
使用 DictReader 读取 CSV 文件:

DictReader读取
输出结果如下:

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

DictWriter写入
csv.reader() | 从文件对象读取 CSV 数据 | reader = csv.reader(file) |
csv.writer() | 将数据写入 CSV 文件 | writer = csv.writer(file) |
csv.DictReader() | 将 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#
¥125.00
迪士尼皮克斯动画电影漫画典藏第2辑永远的经典漫画疯狂动物城飞屋环游记机器人赛车总动员无敌破坏王
¥59.00
电影机器人总动员瓦力伊娃周边宽松男女夏季短袖学生纯棉T恤衣服
¥139.00
机器人总动员(精)/迪士尼电影艺术设定集
¥54.14
科幻电影中的科学 科学家奶爸的智能体手绘 王元卓 科学普及出版社 宇宙手绘和AI手绘的姊妹篇 机器人总动员 超能陆战队 三体
¥54.14
科幻电影中的科学 科学家奶爸的智能体手绘 王元卓 科学普及出版社 宇宙手绘和AI手绘的姊妹篇 机器人总动员 超能陆战队 三体
¥53.36
科幻电影中的科学 科学家奶爸的智能体手绘 王元卓 科学普及出版社 宇宙手绘和AI手绘的姊妹篇 机器人总动员 超能陆战队 三体