源代码: Lib/csv.py


模块内容
csv 模块定义了以下函数:

  • csv.reader(csvfile, dialect='excel', **fmtparams)
返回一个 reader 对象,该对象将逐行遍历 csvfile。csvfile 可以是任何对象,只要这个对象支持 iterator 协议并在每次调用 __next__() 方法时都返回字符串,文件对象 和列表对象均适用。如果 csvfile 是文件对象,则打开它时应使用 newline=''。 1 可选参数 dialect 是用于不同的 CSV 方言的特定参数组。它可以是 Dialect 类的子类的实例,也可以是 list_dialects() 函数返回的字符串之一。另一个可选关键字参数 fmtparams 可以覆写当前方言格式中的单个格式设置。有关方言和格式设置参数的完整详细信息,请参见 变种与格式参数 部分。
csv 文件的每一行都读取为一个由字符串组成的列表。除非指定了 QUOTE_NONNUMERIC 格式选项(在这种情况下,未引用的字段会转换为浮点数),否则不会执行自动数据类型转换。
一个简短的用法示例:
>>> import csv
>>> with open('eggs.csv', newline='') as csvfile:
...     spamreader = csv.reader(csvfile, delimiter=' ', quotechar='|')
...   for row in spamreader:
...   print(', '.join(row))
Spam, Spam, Spam, Spam, Spam, Baked Beans
Spam, Lovely Spam, Wonderful Spam

  • csv.writer(csvfile, dialect='excel', **fmtparams)
返回一个 writer 对象,该对象负责将用户的数据在给定的文件类对象上转换为带分隔符的字符串。csvfile 可以是具有 write() 方法的任何对象。如果 csvfile 是文件对象,则打开它时应使用 newline=''。 1 可选参数 dialect 是用于不同的 CSV 方言的特定参数组。它可以是 Dialect 类的子类的实例,也可以是 list_dialects() 函数返回的字符串之一。另一个可选关键字参数 fmtparams 可以覆写当前方言格式中的单个格式设置。有关方言和格式设置参数的完整详细信息,请参见 变种与格式参数 部分。为了尽量简化与数据库 API 模块之间的对接,None 值会写入为空字符串。虽然这个转换是不可逆的,但它让 SQL 空数据值转储到 CSV 文件更容易,而无需预处理从 cursor.fetch* 调用返回的数据。写入前,所有非字符串数据都先用 str() 转化为字符串再写入。
一个简短的用法示例:
import csv
with open('eggs.csv', 'w', newline='') as csvfile: spamwriter = csv.writer(csvfile, delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)spamwriter.writerow(['Spam'] * 5 + ['Baked Beans']) spamwriter.writerow(['Spam', 'Lovely Spam', 'Wonderful Spam']) 

  • csv.register_dialect(name[, dialect[, **fmtparams]])

namedialect 关联起来。name 必须是字符串。要指定变种 (dialect),可以给出 Dialect 的子类,或给出 fmtparams 关键字参数,或两者都给出,此时关键字参数会覆盖 dialect 参数。 有关变种和格式设置参数的完整详细信息,请参见 变种与格式参数 部分。

  • csv.unregister_dialect(name)

从变种注册表中删除 name 对应的变种。如果 name 不是已注册的变种名称,则抛出 Error 异常。

  • csv.get_dialect(name)

返回 name 对应的变种。如果 name 不是已注册的变种名称,则抛出 Error 异常。该函数返回的是不可变的 Dialect 对象。

  • csv.list_dialects()

返回所有已注册变种的名称。

  • csv.field_size_limit([new_limit])

返回解析器当前允许的最大字段大小。如果指定了 new_limit,则它将成为新的最大字段大小。
csv 模块定义了以下类:

class csv.DictReader(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds)创建一个对象,其操作类似于常规 reader 但会将每行中的信息映射到一个 OrderedDict,其中的键由可选的 fieldnames 形参给出。
fieldnames 形参是一个 sequence。 如果省略 fieldnames,则文件 f 第一行中的值将被用作字段名。 无论字段名是如何确定的,有序字典都将保留其原始顺序。
If a row has more fields than fieldnames, the remaining data is put in a list and stored with the fieldname specified by restkey (which defaults to None). If a non-blank row has fewer fields than fieldnames, the missing values are filled-in with None.
所有其他可选或关键字参数都传递给底层的 reader 实例。
在 3.6 版更改: 返回的行现在的类型是 OrderedDict。
一个简短的用法示例:
>>> import csv
>>> with open('names.csv', newline='') as csvfile:
...     reader = csv.DictReader(csvfile)
...   for row in reader:
...   print(row['first_name'], row['last_name'])
...
Eric Idle
John Cleese>>> print(row)
OrderedDict([('first_name', 'John'), ('last_name', 'Cleese')])

class csv.DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds)

创建一个对象,该对象在操作上类似常规 writer,但能将字典映射到输出行。fieldnames 参数是由 key(键)组成的 序列,用于指定字典中的 value (值)的顺序,这些值会按指定顺序传递给 writerow() 方法并写入 f 文件。如果字典缺少 fieldnames 中的键,则可选参数 restval 用于指定要写入的值。如果传递给 writerow() 方法的字典的某些键在 fieldnames 中找不到,则可选参数 extrasaction 用于指定要执行的操作。如果将其设置为 'raise' (默认值),则会引发 ValueError。 如果将其设置为 'ignore',则字典中的其他键值将被忽略。 所有其他可选或关键字参数都传递给底层的 writer 实例。
Note that unlike the DictReader class, the fieldnames parameter of the DictWriter is not optional. Since Python’s dict objects are not ordered, there is not enough information available to deduce the order in which the row should be written to file f.
一个简短的用法示例:
import csv with open('names.csv', 'w', newline='') as csvfile: fieldnames = ['first_name', 'last_name'] writer = csv.DictWriter(csvfile, fieldnames=fieldnames) 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'}) 

  • class csv.Dialect

Dialect 类是主要依赖于其属性的容器类,用于将定义好的参数传递给特定的 reader 或 writer 实例。

  • class csv.excel

excel 类定义了 Excel 生成的 CSV 文件的常规属性。它在变种注册表中的名称是 'excel'。

  • class csv.excel_tab

excel_tab 类定义了 Excel 生成的、制表符分隔的 CSV 文件的常规属性。它在变种注册表中的名称是 'excel-tab'。

  • class csv.unix_dialect

unix_dialect 类定义了在 UNIX 系统上生成的 CSV 文件的常规属性,即使用 'n' 作为换行符,且所有字段都有引号包围。它在变种注册表中的名称是 'unix'。3.2 新版功能.

  • class csv.Sniffer
Sniffer 类用于推断 CSV 文件的格式。
Sniffer 类提供了两个方法:sniff(sample, delimiters=None)分析给定的 sample 并返回一个 Dialect 子类,该子类中包含了分析出的格式参数。如果给出可选的 delimiters 参数,则该参数会被解释为字符串,该字符串包含了可能的有效分隔符。has_header(sample)分析示例文本(假定为 CSV 格式),如果第一行很可能是一系列列标题,则返回 True。使用 Sniffer 的示例:
with open('example.csv', newline='') as csvfile: dialect = csv.Sniffer().sniff(csvfile.read(1024)) csvfile.seek(0)reader = csv.reader(csvfile, dialect) # ... process CSV file contents here ... csv 模块定义了以下常量:

  • csv.QUOTE_ALL

指示 writer 对象给所有字段加上引号。

  • csv.QUOTE_MINIMAL

指示 writer 对象仅为包含特殊字符(例如 定界符引号字符行结束符 中的任何字符)的字段加上引号。

  • csv.QUOTE_NONNUMERIC

指示 writer 对象为所有非数字字段加上引号。
指示 reader 将所有未用引号引出的字段转换为 float 类型。

  • csv.QUOTE_NONE

指示 writer 对象不使用引号引出字段。当 定界符 出现在输出数据中时,其前面应该有 转义符。如果未设置 转义符,则遇到任何需要转义的字符时,writer 都会抛出 Error 异常。
指示 reader 不对引号字符进行特殊处理。csv 模块定义了以下异常:exception csv.Error该异常可能由任何发生错误的函数抛出

csv 字符串_python3从零学习-5.5.1、CSV 文件读写相关推荐

  1. golang 读取文件最后一行_python3从零学习-5.4.3、文件输入流fileinput

    源代码: Lib/fileinput.py 此模块实现了一个辅助类和一些函数用来快速编写访问标准输入或文件列表的循环. 如果你只想要读写一个文件请参阅 open(). 典型用法为: import fi ...

  2. 零基础小白入门Python之文件读写(一)

    文件读写 文件的作用 就是把一些存储存放起来,可以让程序下一次执行的时候直接使用,而不必重新制作一份,省时省力. 文件的基础操作 打开文件:Python内置了一个open()方法,用于对文件进行读写操 ...

  3. unix查找的字符串包含特殊字符_python3从零学习-5.4.7、Unix风格路径名模式扩展glob...

    源代码: Lib/glob.py glob 模块可根据 Unix 终端所用规则找出所有匹配特定模式的路径名,但会按不确定的顺序返回结果. 波浪号扩展不会生效,但 *, ? 以及表示为 [] 的字符范围 ...

  4. 向一个无法连接的网络尝试了一个套接字操作_python3从零学习-5.8.1、socket—底层网络接口...

    源代码: Lib/socket.py 这个模块提供了访问BSD*套接字*的接口.在所有现代Unix系统.Windows.macOS和其他一些平台上可用. 这个Python接口是用Python的面向对象 ...

  5. unity 检测文本有没有自动换行_python3从零学习-5.1.5、文本自动换行与填充模块textwrap...

    TextWrapper 模块提供了一些快捷函数,以及可以完成所有工作的类 TextWrapper 如果你只是要对一两个文本字符串进行自动换行或填充,快捷函数应该就够用了:否则的话,你应该使用 Text ...

  6. python3字典升序排序_python3从零学习-4.2、内置数据类型

    内置标准类型: * Boolean(布尔) * Number(数字) * String(字符串) * List(列表) * Tuple(元组) * Sets(集合) * Dictionary(字典) ...

  7. python普通类实现接口_python3从零学习-5.8.1、socket—底层网络接口

    源代码: Lib/socket.py 这个模块提供了访问BSD*套接字*的接口.在所有现代Unix系统.Windows.macOS和其他一些平台上可用. 这个Python接口是用Python的面向对象 ...

  8. python3 数组大小_python3从零学习-5.1.8、高效的数值数组array

    此模块定义了一种对象类型,可以紧凑地表示基本类型值的数组:字符.整数.浮点数等. 数组属于序列类型,其行为与列表非常相似,不同之处在于其中存储的对象类型是受限的. 类型在对象创建时使用单个字符的类型码 ...

  9. python 配置文件解析代码_python3从零学习-5.5.2、configparser — 配置文件解析器

    源代码: Lib/configparser.py 此模块提供了它实现一种基本配置语言 ConfigParser 类,这种语言所提供的结构与 Microsoft Windows INI 文件的类似. 你 ...

最新文章

  1. MySQL增量订阅消费组件Canal POC
  2. Python程序开发——第五章 函数
  3. 记得把每一次面试当做经验积累,深夜思考
  4. svn 版本升级的问题
  5. python input sys.stdin
  6. oracle能不能改外键属性,CSS_小议Oracle外键约束修改行为(五), Oracle的外键用来限制子表 - phpStudy...
  7. mysql5.5 5.7区别_mysql 5.5 和5.7 安装的区别
  8. 2017蓝桥杯C++A:迷宫(DFS)
  9. 千千静听 dfx 音效插件_专业团队的蝰蛇音效,好听就是好软件
  10. TimeBake:part1
  11. 二级计算机vfp知识,全国计算机vfp二级考试
  12. 在计算机检索中常用的中文数据库,国内三种常用中文数据库检索功能比较研究.doc...
  13. CStdioFile类的使用1
  14. 内部披露!最新互联网大厂的薪资和职级一览
  15. iPhone开发播放音乐与按钮声音
  16. [转载]创业者的N种死法
  17. 【搜索方法】google搜索
  18. win10默认安装路径修改_解放C盘!2种方法教你修改默认安装目录!
  19. C语言: 字符串 -2
  20. CSS3常用动画效果合集(最全)

热门文章

  1. 微软CNTK 2.0版本发布,支持C#
  2. Consul 服务注册与服务发现
  3. Visual Studio Code 1.8版本添加了Hot Exit、Zen Mode及更多调试选项
  4. Android之解决键盘覆盖编辑框问题
  5. Wireshark和 TcpDump抓包分析心得
  6. Android之android studio如何把项目分享到github并提修改的代码到Github
  7. Android之layout属性介绍
  8. 《零基础看得懂的C语言入门教程 》——(十)C语言的指针原来是这样
  9. 竟然有如何奇葩的如厕方式......
  10. 饿了么翻车,美团被质疑,马云也赔了40亿,这项技术为什么让人害怕?