The csv模块 http://docs.python.org/library/csv.html提供读取和写入 csv 文件的设施,但是不允许就地修改特定单元格.
即便是csvwriter.writerow(row)
您在问题中突出显示的方法不允许您识别和覆盖特定行。相反,它写的是row
参数到 writer 的文件对象,实际上它只是在与 writer 关联的 csv 文件中追加一行。
不要劝阻使用csv模块 http://docs.python.org/library/csv.html不过,它使用起来很简单,并且通过提供的原语,您可以相对轻松地实现您正在寻找的更高级别的功能。
例如,查看以下 csv 文件:
1,2,3,four,5
1,2,3,four,5
1,2,3,four,5
这个单词four
位于第 3 列(第四列,但行只是一个列表,因此索引是从零开始的),可以轻松更新以包含数字4
使用以下程序:
import csv
in_file = open("d:/in.csv", "rb")
reader = csv.reader(in_file)
out_file = open("d:/out.csv", "wb")
writer = csv.writer(out_file)
for row in reader:
row[3] = 4
writer.writerow(row)
in_file.close()
out_file.close()
输出结果:
1,2,3,4,5
1,2,3,4,5
1,2,3,4,5
诚然,创建一些允许识别和更新特定行和列的通用函数需要更多工作,但并不多,因为在 Python 中操作 csv 文件只是操作一系列列表。