Python CSV模块使用实例
admin
2023-07-31 02:14:49
0

举几个例子来介绍一下,Python 的 CSV模块的使用方法,包括,reader, writer, DictReader, DictWriter.register_dialect

一直非常喜欢python的csv模块,简单易用,经常在项目中使用,现在举几个例子说明一下。

复制代码 代码如下:
reader(csvfile[, dialect=\’excel\’][, fmtparam])

参数表:

csvfile
        需要是支持迭代(Iterator)的对象,并且每次调用next方法的返回值是字符串(string),通常的文件(file)对象,或者列表(list)对象都是适用的,如果是文件对象,打开是需要加\”b\”标志参数。

dialect
        编码风格,默认为excel方式,也就是逗号(,)分隔,另外csv模块也支持excel-tab风格,也就是制表符(tab)分隔。其它的方式需要自己定义,然后可以调用register_dialect方法来注册,以及list_dialects方法来查询已注册的所有编码风格列表。

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

例子:

复制代码 代码如下:
import csv

reader = csv.reader(file(\’your.csv\’, \’rb\’))
for line in reader:
    print line
 

writer(csvfile[, dialect=\’excel\’][, fmtparam])

参数表(略: 同reader, 见上)

例子:

复制代码 代码如下:
import csv

writer = csv.writer(file(\’your.csv\’, \’wb\’))
writer.writerow([\’Column1\’, \’Column2\’, \’Column3\’])
lines = [range(3) for i in range(5)]
for line in lines:
    writer.writerow(line)

DictReader

同reader差不多,都是读取CSV用的,只不过会生成一个字典(dict)类型的返回,而不是迭代类型。

DictWriter

 我主要想说的是DictWriter,我为什么会喜欢使用DictWriter呢,因为普通的writer你需要手工去构建列表,尤其是通过表单提交的时候,而我之前因为一直在zope平台上开发,而zope支持一种高级表单数据模型,也就是可以通过定义表单的时候加入相应的标志来使提交后的表单数据自动的生成一个记录(records)类型,也就是生成一个每项数据都是一个字典的列表。这样,我就可以非常方便的直接把表单数据传给 DictWriter而生成csv,当然这个是在你能保证数据的正确性的前提下。好下面我来简单的说明一下这种zope的高级表单数据类型。

例子:

复制代码 代码如下:


           
           
           
           
   

           
           
           
           
   

           
           
           
           
   

           
           
           
           
   

           
           
           
           
   


表单提交后的结果是:
复制代码 代码如下:
rows = [{\’Column1\’: \’0\’, \’Column2\’: \’1\’, \’Column3\’: \’2\’, \’Column4\’: \’3\’},
        {\’Column1\’: \’0\’, \’Column2\’: \’1\’, \’Column3\’: \’2\’, \’Column4\’: \’3\’},
        {\’Column1\’: \’0\’, \’Column2\’: \’1\’, \’Column3\’: \’2\’, \’Column4\’: \’3\’},
        {\’Column1\’: \’0\’, \’Column2\’: \’1\’, \’Column3\’: \’2\’, \’Column4\’: \’3\’},
        {\’Column1\’: \’0\’, \’Column2\’: \’1\’, \’Column3\’: \’2\’, \’Column4\’: \’3\’}]

这样就可以直接调用DictWriter.writerows方法来处理了:
复制代码 代码如下:
import csv

fieldnames = [\’Column1\’, \’Column2\’, \’Column3\’, \’Column4\’]
dict_writer = csv.DictWriter(file(\’your.csv\’, \’wb\’), fieldnames=fieldnames)
dict_writer.writerow(fieldnames) # CSV第一行需要自己加入
dict_writer.writerows(rows)  # rows就是表单提交的数据

*注意:这里的csv文件写入需要External Method的支持,因为在zope中由于权限沙箱的问题是不能直接操作csv模块来读写文件系统的。

 
这样用起来是不是非常的方便呢,这里给出生成上面表单的DTML代码:
复制代码 代码如下:



   
       
   





您可以根据您自己的需要来改写这个表单的生成。

参考文献:
http://docs.python.org/lib/module-csv.html
http://www.python.org/dev/peps/pep-0305/

相关内容

热门资讯

Mobi、epub格式电子书如... 在wps里全局设置里有一个文件关联,打开,勾选电子书文件选项就可以了。
定时清理删除C:\Progra... C:\Program Files (x86)下面很多scoped_dir开头的文件夹 写个批处理 定...
scoped_dir32_70... 一台虚拟机C盘总是莫名奇妙的空间用完,导致很多软件没法再运行。经过仔细检查发现是C:\Program...
500 行 Python 代码... 语法分析器描述了一个句子的语法结构,用来帮助其他的应用进行推理。自然语言引入了很多意外的歧义,以我们...
小程序支付时提示:appid和... [Q]小程序支付时提示:appid和mch_id不匹配 [A]小程序和微信支付没有进行关联,访问“小...
pycparser 是一个用... `pycparser` 是一个用 Python 编写的 C 语言解析器。它可以用来解析 C 代码并构...
微信小程序使用slider实现... 众所周知哈,微信小程序里面的音频播放是没有进度条的,但最近有个项目呢,客户要求音频要有进度条控制,所...
65536是2的几次方 计算2... 65536是2的16次方:65536=2⁶ 65536是256的2次方:65536=256 6553...
Apache Doris 2.... 亲爱的社区小伙伴们,我们很高兴地向大家宣布,Apache Doris 2.0.0 版本已于...
项目管理和工程管理的区别 项目管理 项目管理,顾名思义就是专注于开发和完成项目的管理,以实现目标并满足成功标准和项目要求。 工...