python csv学习

13.1. csv — CSV File Reading and Writing

The so-called CSV (Comma Separated Values) format is the most common import and export format for spreadsheets and databases.  There is no “CSV standard”, so the format is operationally defined by the many applications which read and write it.  The lack of a standard means that subtle differences often exist in the data produced and consumed by different applications.  These differences can make it annoying to process CSV files from multiple sources.  Still, while the delimiters and quoting characters vary, the overall format is similar enough that it is possible to write a single module which can efficiently manipulate such data, hiding the details of reading and writing the data from the programmer.

所谓CSV(逗号分隔值)格式是电子表格和数据库中最常见的导入和导出格式。这里没有“CSV 标准”,所以格式是由许多读写它的应用操作上定义。这标准上的缺乏意味着细微的差别往往存在于不同的应用程序生产和消费数据。这些差异可以使多个来源的处理CSV文件变得困难。同时,分隔符和引用字符的变化,整体格式如此相似以至于程序员可以写一个单独的模块,此模块可以有效操纵这样的数据,并且封装读写数据的细节。

The csv module implements classes to read and write tabular data in CSVformat.  It allows programmers to say, “write this data in the format preferred by Excel,” or “read data from this file which was generated by Excel,” without knowing the precise details of the CSV format used by Excel.  Programmers can also describe the CSV formats understood by other applications or define their own special-purpose CSV formats.

csv模块实现类读写CSV格式的表格数据。它允许程序员如此说:“Excel优选这种格式写入数据“,或”从Excel等文件读数据,”不知道Excel所用的CSV格式的精确细节,程序员也可以以其他应用程序理解来描述csv格式,或者定义自己专用的csv格式。

The csv module’s reader and writer objects read and write sequences.  Programmers can also read and write data in dictionary form using the DictReader and DictWriter classes.

csv模块的读写器对象可以读取和写入序列。程序员也可以使用DictReader和DictWriter类读取和写入字典形式的数据。

Note:This version of the csv module doesn’t support Unicode input.  Also, there are currently some issues regarding ASCII NUL characters.  Accordingly, all input should be UTF-8 or printable ASCII to be safe; see the examples in section Examples.

注意:这个版本(2.7)的csv模块不支持Unicode输入。此外,目前有一些有关于ASCII空字符的问题。因此,所有的输入都应该是UTF-8或者打印安全的ASCII;这些可以在Example部分看实例。

13.1.1. Module Contents

The csv module defines the following functions:

  • csv.reader(csvfile, dialect=‘excel‘, **fmtparams)
  • Return a reader object which will iterate over lines in the given csvfile.csvfile can be any object which supports the iterator protocol and returns a string each time its next() method is called — file objects and list objects are both suitable.   If csvfile is a file object, it must be opened with the ‘b’ flag on platforms where that makes a difference.  An optionaldialect parameter can be given which is used to define a set of parameters specific to a particular CSV dialect.  It may be an instance of a subclass of the Dialect class or one of the strings returned by thelist_dialects() function.  The other optional fmtparams keyword arguments can be given to override individual formatting parameters in the current dialect.  For full details about the dialect and formatting parameters, see section Dialects and Formatting Parameters.

返回一个读对象,它会遍历给定的csvfile(可以是支持迭代器协议的任何对象,文件和列表对象都是合适的),每次next()方法调用都会返回一个字符串。如果csvfile是一个文件对象,它必须在有差异的平台上以“b”模式打开文件。一个可选的dialect参数常用来定义一系列特定的csv dialect(不清楚翻译为何为好)参数。它可以是dialect类中的子类或由list_dialects()函数返回的字符串之一的一个实例。其他可选的关键字参数fmtparams可以在当前dialect覆盖个别格式化参数时给出。有关dialect和格式化参数详情,请参照Dialects and Formatting Parameters部分。

Each row read from the csv file is returned as a list of strings.  No automatic data type conversion is performed.

A short usage example:

>>>

>>> import csv
>>> with open(‘eggs.csv‘, ‘rb‘) as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=‘ ‘, quotechar=‘|‘)
...     for row in spamreader:
...         print ‘, ‘.join(row)
Spam, Spam, Spam, Spam, Spam, Baked BeansSpam
Lovely Spam, Wonderful Spam

Changed in version 2.5: The parser is now stricter with respect to multi-line quoted fields. Previously, if a line ended within a quoted field without a terminating newline character, a newline would be inserted into the returned field. This behavior caused problems when reading files which contained carriage return characters within fields. The behavior was changed to return the field without inserting newlines. As a consequence, if newlines embedded within fields are important, the input should be split into lines in a manner which preserves the newline characters.

在2.5版本发生变化:解释器现在相对于多行引述领域更加严格。之前,如果一行结束但没有终止换行符,换行符将插入到返回字段。这种情况经常在读取包含回车符的文件时发生错误。这种情况已被修改,返回字段不会插入新行。因此,如果新行嵌入字段很重要,输入应分成在其中保留换行字符的方式。

  • csv.writer(csvfile, dialect=‘excel‘, **fmtparams)
  • Return a writer object responsible for converting the user’s data into delimited strings on the given file-like object.  csvfile can be any object with awrite() method.  If csvfile is a file object, it must be opened with the ‘b’ flag on platforms where that makes a difference.  An optional dialectparameter can be given which is used to define a set of parameters specific to a particular CSV dialect.  It may be an instance of a subclass of theDialect class or one of the strings returned by thelist_dialects() function.  The other optional fmtparams keyword arguments can be given to override individual formatting parameters in the current dialect.  For full details about the dialect and formatting parameters, see section Dialects and Formatting Parameters. To make it as easy as possible to interface with modules which implement the DB API, the value None is written as the empty string.  While this isn’t a reversible transformation, it makes it easier to dump SQL NULL data values toCSV files without preprocessing the data returned from a cursor.fetch* call. All other non-string data are stringified with str() before being written.

    未完待续。。。

时间: 2024-10-27 07:26:37

python csv学习的相关文章

Python爬虫学习路线,强烈建议收藏这十一条

(一)如何学习Python 学习Python大致可以分为以下几个阶段: 1.刚上手的时候肯定是先过一遍Python最基本的知识,比如说:变量.数据结构.语法等,基础过的很快,基本上1~2周时间就能过完了,我当时是在这儿看的基础:Python 简介 | 菜鸟教程 2.看完基础后,就是做一些小项目巩固基础,比方说:做一个终端计算器,如果实在找不到什么练手项目,可以在 Codecademy - learn to code, interactively, for free 上面进行练习. 如果时间充裕的

在python下学习libsvm

1.下载libsvm,python,gnuplot(链接网上全有,压缩包自己保留着) 2.在python上的实现(主要用截图的形式展现) (1)输入命令寻求最优参数 (2) 参数c,g输出结果 gnuplot输出图像 (3)最后输入训练数据,训练数据,通过建立模型进行预测 大概也就这样了,grid.py里面需要改下gnuplot的路径 在python下学习libsvm,布布扣,bubuko.com

python csv文件打开错误:_csv.Error: line contains NULL byte

正常的csv文件读取如下: #coding:utf-8 import csv csvfilename = 'demo.csv' print u'################获取某一行' with open(csvfilename, 'rb') as csvfile: reader = csv.reader(csvfile) rows = [row for row in reader] print rows[0], rows[1], rows[2], rows[3] print u'#####

python的学习内容

Python的学习路线 掌握基本的语法 这个入门的东西很多,最好的当然是去看官方的文档,如果英语不好那就另当别论,其次看一些优秀的书籍,当然这个也是耗费时间的,但是如果你要是速成,速度的速,那通过一些博客.视频其实也不失为好的方式,起码上手更容易一些了,尤其是你真正的第一门语言. 掌握常用的库 使用成熟可靠的第三方库是多么的高效,尤其是你就几个人小打小闹的时候,重复造轮子是多么的没有必要,但是你必须理解人家的机制,等你用第三方库多了,有能力写自己的库的时候,那我就是真正的恭喜你了. 自动化运维相

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

python模块学习(2)——re模块

正则表达式并不是python的一部分,正则表达式是用于处理字符串的强大工具,拥有自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,但功能十分强大.得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同:但不用担心,不被支持的语法通常是不常用的部分.如果已经在其他语言里使用过正则表达式,只需要简单看一看就可以上手了. 下图展示了使用正则表达式进行匹配的流程:  正则表达式的大致匹配过程是:依次拿出表达式和文本中的字符

[Python]webservice 学习(4) -- Django+soap

前面学习使用soaplib搭建基于soap的webservice服务,我这个web项目其实只是要提供一两个webservice接口,如果直接写两个脚本外挂感觉挺麻烦,于是想能不能和web框集成到一起.于是在google上搜索,最后在github上找到了这么一段代码,原文地址为https://gist.github.com/rotaris/935809,于是我写简单写了一个demo放到了github上.代码上没有什么变化,只是直接创建了一个小项目,也许能容易看. 项目地址为: https://gi

Python Click 学习笔记(转)

原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发的一个小工具需要在命令行环境下操作,就写个学习笔记. 国际惯例,先来一段 "Hello World" 程序(假定已经安装了 Click 包). # hello.py import click @click.command() @click.option('--count', default

python基础学习日志day5-各模块文章导航

python基础学习日志day5---模块使用 http://www.cnblogs.com/lixiang1013/p/6832475.html python基础学习日志day5---time和datetime模块 http://www.cnblogs.com/lixiang1013/p/6848245.html python基础学习日志day5---random模块http://www.cnblogs.com/lixiang1013/p/6849162.html python基础学习日志da