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:
    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

猜你喜欢

转载自blog.csdn.net/Mao_Jonah/article/details/81636698