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=”
结果如下: ![这里写图片描述](https://img-blog.csdn.net/20180814192524367?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L01hb19Kb25haA==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70) 从图中我们, 可以看到空行已经全部消失。with open(‘test.csv’,’w’,newline=”) as csvfile:
-
追加写入
在原有文件的最后一行数据后面追加写入新的数据。
import csv
r4 = ["5","3","1"]
with open('test.csv','a',newline='') as csvfile:
writer = csv.writer(csvfile)
writer.writerow(r4)
运行结果如下所示:
目前主要用到的是这些,其它的有需要再更。比如:writerheader(),dialect()等。
Reference:
[1] https://docs.python.org/3.5/library/csv.html#csv-fmt-params
[2] https://blog.csdn.net/u012162613/article/details/41915859
[3] https://blog.csdn.net/guoziqing506/article/details/52014506