湘潭网站建设 都来磐石网络,wordpress免费企模板下载,wordpress关停网站,龙华网站建设招商CSV模块的使用 1、csv简介 CSV (Comma Separated Values)#xff0c;即逗号分隔值#xff08;也称字符分隔值#xff0c;因为分隔符可以不是逗号#xff09;#xff0c;是一种常用的文本 格式#xff0c;用以存储表格数据#xff0c;包括数字或者字符。很多程序在处理数… CSV模块的使用 1、csv简介 CSV (Comma Separated Values)即逗号分隔值也称字符分隔值因为分隔符可以不是逗号是一种常用的文本 格式用以存储表格数据包括数字或者字符。很多程序在处理数据时都会碰到csv这种格式的文件它的使用是比 较广泛的Kaggle上一些题目提供的数据就是csv格式csv虽然使用广泛但却没有通用的标准所以在处理csv 格式时常常会碰到麻烦幸好python内置了csv模块。下面简单介绍csv模块中最常用的一些函数。 更多内容请参考https://docs.python.org/2/library/csv.html#module-csv 2、csv模块中的函数 reader(csvfile, dialectexcel, **fmtparams) 参数说明 csvfile必须是支持迭代(Iterator)的对象可以是文件(file)对象或者列表(list)对象如果是文件对 象打开时需要加b标志参数。 dialect编码风格默认为excel的风格也就是用逗号,分隔dialect方式也支持自定义通过调用register_dialect方法来注册下文会提到。 fmtparam格式化参数用来覆盖之前dialect对象指定的编码风格。 import csv with open(test.csv,rb) as myFile: linescsv.reader(myFile) for line in lines: print line test.csv是文件名‘rb’中的r表示“读”模式因为是文件对象所以加‘b’。open()返回了一个文件对象 myFilereader(myFile)只传入了第一个参数另外两个参数采用缺省值即以excel风格读入。reader()返回一个 reader对象lines,lines是一个list当调用它的方法lines.next()时会返回一个string。上面程序的效果是将csv 文件中的文本按行打印每一行的元素都是以逗号分隔符,分隔得来。 在我的test.csv文件中存储的数据如图 程序输出 [1, 2] [3, a] [4, b] 补充reader对象还提供一些方法line_num、dialect、next() writer(csvfile, dialectexcel, **fmtparams) 参数的意义同上这里不赘述直接上例程 with open(t.csv,wb) as myFile: myWritercsv.writer(myFile) myWriter.writerow([7,g]) myWriter.writerow([8,h]) myList[[1,2,3],[4,5,6]] myWriter.writerows(myList) w表示写模式。 首先open()函数打开当前路径下的名字为t.csv的文件如果不存在这个文件则创建它返回myFile文件对象。 csv.writer(myFile)返回writer对象myWriter。 writerow()方法是一行一行写入writerows方法是一次写入多行。 注意如果文件t.csv事先存在调用writer函数会先清空原文件中的文本再执行writerow/writerows方法。 补充除了writerow、writerowswriter对象还提供了其他一些方法writeheader、dialect register_dialect(name, [dialect, ]**fmtparams) 这个函数是用来自定义dialect的。 参数说明 name,你所自定义的dialect的名字比如默认的是excel你可以定义成mydialect [dialect, ]**fmtparamsdialect格式参数有delimiter分隔符默认的就是逗号、quotechar、 quoting等等可以参考Dialects and Formatting Parameters csv.register_dialect(mydialect,delimiter|, quotingcsv.QUOTE_ALL) 上面一行程序自定义了一个命名为mydialect的dialect参数只设置了delimiter和quoting这两个其他的仍然采用 默认值其中以|为分隔符。接下来我们就可以像使用excel一样来使用mydialect了。我们来看看效果 在我test.csv中存储如下数据 以mydialect风格打印 with open(test.csv,rb) as myFile: linescsv.reader(myFile,mydialect) print lines.line_num for line in lines: print line 输出 [1,2, 3] [4,5, 6] 可以看到现在是以|为分隔符1和2合成了一个字符串因为1和2之间的分隔符是逗号而mydialect风格的分隔 符是|3单独一个字符串。 对于writer()函数同样可以传入mydialect作为参数这里不赘述。 unregister_dialect(name) 这个函数用于注销自定义的dialect 此外csv模块还提供get_dialect(name)、list_dialects()、field_size_limit([new_limit])等函数这些都比较 简单可以自己试试。比如list_dialects()函数会列出当前csv模块里所有的dialect print csv.list_dialects() 输出 [excel-tab, excel, mydialect] mydialect是自定义的excel-tab, excel都是自带的dialect其中excel-tab跟excel差不多 只不过它以tab为分隔符。 csv模块还定义了 一些类DictReader、DictWriter、Dialect等DictReader和DictWriter类似于reader和writer。 一些常量QUOTE_ALL、QUOTE_MINIMAL、.QUOTE_NONNUMERIC等这些常量可以作为Dialects and Formatting Parameters的值。 csv文件格式是一种通用的电子表格和数据库导入导出格式。最近我调用RPC处理服务器数据时经常需要将数据做个存档便使用了这一方便的格式。 Python csv模块封装了常用的功能使用的简单例子如下: # 读取csv文件
import csv
with open(some.csv, rb) as f: # 采用b的方式处理可以省去很多问题 reader csv.reader(f) for row in reader: # do something with row, such as row[0],row[1] import csv with open(some.csv, wb) as f: # 采用b的方式处理可以省去很多问题 writer csv.writer(f) writer.writerows(someiterable) 默认的情况下, 读和写使用逗号做分隔符(delimiter)用双引号作为引用符(quotechar)当遇到特殊情况是可以根据需要手动指定字符, 例如: import csv
with open(passwd, rb) as f: reader csv.reader(f, delimiter:, quotingcsv.QUOTE_NONE) for row in reader: print row 上述示例指定冒号作为分隔符并且指定quote方式为不引用。这意味着读的时候都认为内容是不被默认引用符()包围的。quoting的可选项为: QUOTE_ALL, QUOTE_MINIMAL, QUOTE_NONNUMERIC, QUOTE_NONE. 有点需要注意的是当用writer写数据时 None 会被写成空字符串浮点类型会被调用 repr() 方法转化成字符串。所以非字符串类型的数据会被 str() 成字符串存储。所以当涉及到unicode字符串时可以自己手动编码后存储或者使用csv提供的 UnicodeWriter, 具体可参见这里。 字典方式地读写 csv还提供了一种类似于字典方式的读写方式如下: 格式如下: class csv.DictReader(csvfile, fieldnamesNone, restkeyNone, restvalNone, dialectexcel, *args, **kwds)class csv.DictWriter(csvfile, fieldnames, restval, extrasactionraise, dialectexcel, *args, **kwds) 其中fieldnames指定字典的key值如果reader里没有指定那么默认第一行的元素在writer里一定要指定这个。 使用示例 # 读import csvwith open(names.csv) as csvfile: ... reader csv.DictReader(csvfile) ... for row in reader: ... print(row[first_name], row[last_name]) ... Baked Beans Lovely Spam Wonderful Spam # 写 import csv with open(names.csv, w) as csvfile: fieldnames [first_name, last_name] writer csv.DictWriter(csvfile, fieldnamesfieldnames) writer.writeheader() writer.writerow({first_name: Baked, last_name: Beans}) writer.writerow({first_name: Lovely, last_name: Spam}) writer.writerow({first_name: Wonderful, last_name: Spam}) 其它 csv模块还涉及了其它的概念比如 Dialects, 还提供了供错误处理的 exception csv.Error 等因为实际使用较少及就不累赘在此。更多参考官方文档。 cr : http://www.cnblogs.com/sjfgod/p/7623395.html posted on 2017-10-26 16:25 会飞的蝌蚪 阅读(...) 评论(...) 编辑 收藏 转载于:https://www.cnblogs.com/hfdkd/p/7737483.html