Python学习:读取csv文件
CSV是Conma Sepatrate Values( 逗号分隔值 )的缩写,文档的内容是由‘,’分隔的一列列数据构成的。CSV格式是电子表格和 数据库 最常用的导入和导出格式。 CSV模块实现了以CSV格式读取和写入表格数据,它允许程序员以Excel首选格式写入数据,或者从Excel生成的文件中读取数据。
Excel 与CSV文档
(1) Excel创建csv文档
Excel是我们经常用来制作表格和进行一些数据处理的工具,Excel也可以被用来创建csv文件。 在Excel文档中编辑如下数据 在选择保存的时候文件格式可以选择csv格式,保存完毕之后便生成了csv格式文件。 为了更好的理解逗号分隔值(csv)文件,我们将刚刚保存好的xxx.csv文件以记事本(.txt)打开我们可以看到如下结果 原本表格中各个数据之间用’,’隔开了,这样,我们便能很直观的理解逗号分隔的意思了。
Python的CSV模块内容
- csv.reader(csvfile, dialect=’excel’, **fmtparams) 参数说明: csvfile: 要使用的对象csv文件,csvfile是任何支持迭代器协议的对象,可以是文件对象或者列表对象。如果csvfile是一个文件对象,那么它可以被 newline=” 打开,并且其选择打开模式时需要加“b”标志参数。”r”表示读模式 dialect:编码风格,默认为excel的风格(使用‘,’分隔)。同时,其也支持自定义。给出的可选dialect参数被用于定义特定于CSV dialect的一组参数。它可以是dialect类子类的实例,也可以是list_dialects()函数返回的字符串之一。 fmtparam: 格式化参数,用来覆盖之前dialect参数指定的编码风格。
一个简短的使用例子:
import csv
with open('test.csv',r) as csvfile:
reader = csv.reader(csvfile)
for line in reader:
print(line)
结果如下:
[‘No.’, ‘Color’, ‘Root’] [‘1’, ‘1’, ‘1’] [‘2’, ‘2’, ‘1’] [‘3’, ‘2’, ‘1’] [‘4’, ‘1’, ‘1’]
- csv.writer(csvfile, dialect=’excel’, **fmtparams) 与读取文件函数csv.reader()类似,向csv文件中写入数据。
csv.writerow() 向csv文件中写入一行数据 csv.writerows() 向csv文件中写入数行数据
一个简短的使用例子:
import csv
name = ["No.","Color","Root"]
r1 = ["1","1","1"]
r2 = ["2","2","1"]
r3 = [["3","2","1"],["4","1","1"]]
with open('test.csv','w') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(name)
writer.writerow(r1)
writer.writerow(r2)
writer.writerows(r3)
如果’test.csv’ 文件事先存在,writer函数会首先清空原文件中的数据, 再执行writerow()等。如果事先不存在,则writer()会首先创建一个空白的test.csv文件。 运行结果如下图所示: ![这里写图片描述](https://img-blog.csdn.net/2018081418570661?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01hb19Kb25haA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 从运行结果上我们看到行之间都有空行,解决方案python2的话可以将”w”模式改成”wb” ,python3中在模式参数后面添加newline=”
with open(‘test.csv’,’w’,newline=”) as csvfile:
结果如下: ![这里写图片描述](https://img-blog.csdn.net/20180814192524367?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01hb19Kb25haA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 从图中我们, 可以看到空行已经全部消失。
- 追加写入 在原有文件的最后一行数据后面追加写入新的数据。
import csv
r4 = ["5","3","1"]
with open('test.csv','a',newline='') as csvfile: