前言
python 的 csv 模块提供了一些用于处理 CSV(逗号分隔值)文件的方法。
常用的函数方法
csv.reader(file, dialect='excel', **kwargs)
:创建一个 reader 对象,用于从给定的文件中读取 CSV 数据。可以指定 dialect 参数来指定 CSV 文件的格式。
csv.writer(file, dialect='excel', **kwargs)
:创建一个 writer 对象,用于将 CSV 数据写入到给定的文件中。
csv.DictReader(file, fieldnames=None, restkey=None, restval=None, dialect='excel', **kwargs)
:创建一个 reader 对象,读取 CSV 数据并将每行解析为字典。
csv.DictWriter(file, fieldnames, restval='', extrasaction='raise', dialect='excel', **kwargs)
:创建一个 writer 对象,将字典数据写入到 CSV 文件中。
reader.writerow(row)
:将一行数据写入 CSV 文件。
writerow(row)
:将一行数据从 CSV 文件读取。
reader.fieldnames
:获取 CSV 文件的列名。
writerow(row)
:将一行字典数据写入 CSV 文件。
writerows(rows)
:将多行数据写入 CSV 文件。
示例
import csv
# 读取csv
def read_csv(path):
"""
:param path: str 存储路径
:return:
"""
with open(path, 'r', encoding="utf-8-sig") as f:
reader = csv.reader(f)
# 逐行读取
for row, row_data in enumerate(reader):
print(row_data)
# 写入csv
def write_csv(data, path):
"""
:param data: list
:param path: str 存储路径
:return:
"""
# newline='' 这条加上就不会空一行的情况
with open(path, 'w', newline='') as f:
my_writer = csv.writer(f)
# 单条数据写入
# my_writer.writerows(data[0])
# 批量写入
my_writer.writerows(data)
常见的问题和解决方法
文件编码:CSV 文件可能使用不同的编码格式进行存储,例如 UTF-8、GBK 等。解决方法是在打开文件时指定正确的编码格式,例如使用
open(filename, encoding='utf-8')
打开 UTF-8 编码的文件。分隔符选择:CSV 文件的字段通常是通过逗号进行分隔,但有时也可以使用其他分隔符,如分号、制表符等。解决方法是在读取或写入 CSV 文件时,通过设置
delimiter
参数指定正确的分隔符,例如csv.reader(file, delimiter=';')
。引号处理:CSV 文件中的字段值有时会包含引号(如双引号),用于表示特殊字符或包含分隔符的文本。解决方法是在读取或写入 CSV 文件时,设置
quoting
参数来处理引号,例如csv.reader(file, quoting=csv.QUOTE_ALL)
可以将所有字段值都视为带引号的字符串。处理空值:CSV 文件中的字段可能存在空值,即某些字段没有对应的值。解决方法是在读取或处理数据时,使用条件语句判断字段是否为空,并进行相应的处理,例如跳过空行或给空值设定默认值。
处理特殊字符:CSV 文件中的字段值可能包含特殊字符,如换行符、制表符等。解决方法是使用
csv.reader
方法读取文件时,设置lineterminator
参数来处理换行符,例如csv.reader(file, lineterminator='\n')
。错误处理:在读取或写入 CSV 文件时,可能会遇到一些错误,如文件不存在、权限问题等。解决方法是使用异常处理机制,如
try-except
语句,捕获和处理相关的异常情况。数据类型转换:在读取 CSV 文件时,所有字段的值都是字符串类型。如果需要将其转换为其他数据类型(如整数、浮点数),可以使用内置的类型转换函数,例如
int()
、float()
等。大型文件处理:处理大型 CSV 文件时,要注意控制内存消耗。可以使用迭代器或逐行处理的方式来降低内存占用,例如使用
csv.reader
的迭代器模式进行逐行读取数据,而不是一次性读取整个文件。
使用总结
只要在使用csv库时,注意以下几点,就可以正常操作csv文件了.
导入库:首先要导入
csv
库,使用import csv
语句将其引入 Python 程序中。打开文件:使用
open()
函数打开 CSV 文件,并指定文件名和相应的模式(如读取模式'r'
、写入模式'w'
等)。创建读写对象:对于读取操作,可以使用
csv.reader()
方法创建一个 CSV 读取对象;对于写入操作,可以使用csv.writer()
方法创建一个 CSV 写入对象。设置参数:根据具体情况,可以设置一些参数来配置读写行为。例如,可以设置分隔符
delimiter
、引号处理方式quoting
、换行符lineterminator
等。读取数据:通过遍历 CSV 读取对象,可以逐行读取 CSV 文件中的数据。每一行数据都是一个列表,其中每个元素表示一个字段的值。
处理数据:对于读取到的数据,可以进行各种处理操作,如验证、过滤、转换等,以满足需求。可以使用列表索引或迭代方式访问和处理字段值。
写入数据:通过调用 CSV 写入对象的
writerow()
方法,可以逐行将数据写入到 CSV 文件中。需要将每行数据作为一个列表传递给该方法。关闭文件:在读写完成后,记得使用
close()
方法关闭 CSV 文件,以释放资源。