Python csv模块

Python csv模块主要用来处理csv文件,可以读取、写入、创建csv文件

 

何为csv文件呢?

 

百度百科:逗号分隔值(Comma-SeparatedValues,CSV,有时也称为字符分隔值,因为分隔字符也可以不是逗号),其文件以纯文本形式存储表格数据(数字和文本)。纯文本意味着该文件是一个字符序列,不含必须像二进制数字那样被解读的数据。CSV文件由任意数目的记录组成,记录间以某种换行符分隔;每条记录由字段组成,字段间的分隔符是其它字符或字符串,最常见的是逗号或制表符。通常,所有记录都有完全相同的字段序列。

 

python中的csv模块的主要函数有下面两个:

 

csv.reader(csvfile, dialect='excel', **fmtparams)

注意:csvfile必须是文件对象,不能是文件名,不清楚的话,一会可以看下面的代码

返回值:一个reader对象,这个对象是可以迭代的,有个line_num参数,表示当前行数

参数表:

    csvfile

            需要是支持迭代(Iterator)的对象,并且每次调用next方法的返回值是字符串(string),

            通常的文件(file)对象,或者列表(list)对象都是适用的

    dialect

            编码风格,默认为excel方式,也就是逗号(,)分隔,另外csv模块也支持excel-tab

            风格,也就是制表符(tab)分隔。其它的方式需要自己定义,然后可以调用register_dialect

            方法来注册,以及list_dialects方法来查询已注册的所有编码风格列表。

    fmtparam

            格式化参数,用来覆盖之前dialect对象指定的编码风格。

 

csv.writer(csvfile, dialect='excel', **fmtparams)

注意:csvfile必须是文件对象,不能是文件名,不清楚的话,一会可以看下面的代码

返回值:返回一个writer对象,这个对象有两个函数writerow()writerows()

参数表:跟csv.reader()的参数表一样

 

下面看个例子吧,注释写的比较到位,相信你能看明白:

 

import csv

# 读取一个 csv 文件
myfilepath = 'C:/Users/a/Desktop/mytablib.csvNew'
# 这里用到的 open 都要加上 newline='' 否则会多一个换行符(标准库文档里说的)
myfile = open(myfilepath, 'r', newline='')
myreader = csv.reader(myfile)
for row in myreader:
    if myreader.line_num == 1 : # line_num是从 1 开始计数的
        continue
    for i in row : # row是一个列表
        print(i, end=' ')
    print()
myfile.close() # 记得 close 文件


# 写入一个已经存在的文件
myfile = open(myfilepath, 'a', newline='') # 使用append模式打开文件
mywriter = csv.writer(myfile)
mywriter.writerow((3, 'wang', 25)) # 加入一行
mywriter.writerow((4, 'zhou', 38))
mywriter.writerows([[5, 'zhao', 16],[6, 'qian', 28]]) # 加入多行
myfile.close()


#创建一个新的 csv 文件
mydata = [['index', 'name', 'age'], # mydata是一个二维列表
          [1, 'dawa', 3],
          [2, 'erwa', 4],
          [3, 'sanwa', 5],
          [4, 'siwa', 6]]
myfile = open('csvdata.dat', 'w', newline='')
mywriter = csv.writer(myfile, delimiter=';') # 设定分隔符为分号
mywriter.writerows(mydata)
myfile.close()


 

 

 

 

 

posted @ 2014-12-04 21:41  Callingwisdom  阅读(165)  评论(0编辑  收藏  举报