csv模块,用于读写 csv 文件,常用 reader 和 writer 对象进行操作

1、模块的类

1.1 Dialect 对象,设置 csv 文件的各种格式,包括分隔符,引用符,转义符等

1.1.1 对象属性

delimiter:单字符分隔符,默认','
quotechar:单字符引用符,当内容中包含特定字符时,如分隔符、引用符、换行符等,将内容用指定字符括起来,排除歧义,默认'"'
escapechar:单字符转义符,写文件时如果 quoting 为 QUOTE_NONE 则转义分隔符,如果 doublequote 为 False 则转义引用符。读文件时,可以正确识别转义后的内容。默认 None,不支持转义
doublequote:控制内容里出现了引用符时的操作,默认 True,引用符成倍出现,为 False 时,在引用符前加转义符
quoting:控制何时使用引用符,默认 QUOTE_MINIMAL,模块内还定义了其他 QUOTE_* 常量
lineterminator:写文件时指定换行符,默认 '\r\n'
skipinitialspace:默认 False,不忽略分隔符后的空格
strict:默认 False,输入 csv 损坏时不抛出异常

1.2 reader 对象

1.2.1 初始化构建类:reader(csvfile, dialect='excel', **fmtparams)

参数设置:
csvfile:要打开读取的文件对象或是列表对象,只要每次迭代可以返回一个字符串,文件对象用‘b’模式打开能避免不同平台产生错误
dialect:设置 csv 文件的格式,是 Dialect 类的一个子类
fmtparams:也用于设置格式,可以覆盖 dialect 的设置

1.2.2 实例方法

next():列表形式返回下一行数据

1.2.3 对象属性

dialect:只读的 dialect 描述
line_num:从源迭代器读到的行数

1.3 writer 对象

1.3.1 初始化构建类:writer(csvfile, dialect='excel', **fmtparams),参数设置同 reader 对象

1.3.2 实例方法

writerow(row):写一行,格式根据指定的 dialect
writerows(rows):写许多行

1.3.3 对象属性

dialect:只读的 dialect 描述

1.4 DictReader 对象,本质上是 reader 对象的子类

1.4.1 初始化构建类:DictReader(f, fieldnames=None, restkey=None, restval=None, dialect='excel', *args, **kwds),将文件内容读入一个字典中

参数设置:
f:文件对象
fieldnames:字典的键值,如果省略了,就以文件第一行作为字典键值
restkey:键个数少于一行中内容数,多余内容就被加入到 restkey 中
restval:键个数多于一行中内容数,剩余键对应值用 restval 代替
dialect、args、kwds:设置格式,会传入 reader 对象里

1.4.2 实例方法,同 reader 对象

1.4.3 对象额外属性

fieldnames:字典键值

1.5 DictWriter 对象,本质上是 writer 对象的子类

1.5.1 初始化构建类:DictWriter(f, fieldnames, restval='', extrasaction='raise', dialect='excel', *args, **kwds),将内容根据字典对应写入文件中

参数设置:
f:文件对象
fieldnames:字典的键值
restval:内容里缺少了一些键-值,缺少的键-值用 restval 代替
extrasaction:内容里有不包含在 fieldnames 里的键,设置 'raise' 抛出异常,'ignore' 忽略多出来的内容
dialect、args、kwds:设置格式,会传入 writer 对象里

1.5.2 实例额外方法

writeheader():输出包含内容名的一行

1.5.3 对象属性,同 writer 对象

1.6 excel 对象,定义了通常情况下 excel 生成的 csv 文件格式,dialect 名 'excel'

1.7 excel_tab 对象,定义了通常情况下 excel 生成的用 tab 分割的 csv 文件格式,dialect 名 'excel-tab'

1.8 Sniffer 对象,用于推断 csv 文件格式

1.8.1 实例方法

sniff(sample, delimiters=None):分析给定样本,返回拥有找到的参数的值的 Dialect 对象,delimiter 指定时,样本内容会根据指定值分割
has_header(sample):分析样本文本,假设成 csv 格式,判断第一行是否是一系列的标题

2、模块常量

csv.QUOTE_ALL:指定 writer 对象对所有内容都加上引用符
csv.QUOTE_MINIMAL:指定 writer 对象只对出现特定字符的内容加引用符
csv.QUOTE_NONNUMERIC:指定 writer 对象对所有非数字内容加引用符,指定 reader 对象把所有没加引用符的内容转换成 float 类型
csv.QUOTE_NONE:指定 writer 对象不对任何内容加引用符,当内容中出现了分隔符用转义字符标注,未定义转义字符则抛异常,指定 reader 对象不做任何引用符的预处理

3、模块方法

csv.register_dialect(name, [dialect, ]**fmtparams):把特定格式与 name 绑定
csv.unregister_dialect(name):删除格式与 name 的绑定
csv.get_dialect(name):返回指定 name 的格式
csv.list_dialects():返回所有绑定的名字
csv.field_size_limit([new_limit]):返回当前每个内容允许的最大大小,给定 new_limit 则改成指定值

Python2.7-csv的更多相关文章

  1. 如何导入CSV数据 (python3.6.6区别于python2 环境)

    1.python2环境下 2.python3.6.6环境下 如果用python2环境下的代码,在python3.6.6环境下编译会出现以下问题: 错误(1): SyntaxError:Missing ...

  2. 我与python3擦肩而过(二)—— csv文件头哪去啦?

    在看Python Data Visualization Cookbook 这本书(基于python2),开始时读取csv文件头的时候出现问题.查了资料,又是python3的问题,从这个链接找到答案. ...

  3. Python CSV文件处理/读写及With as 用法

    可以不使用CSV模块 逐行处理: for line in open("samples/sample.csv"): title, year, director = line.spli ...

  4. python读取CSV文件

    python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_reader = csv.rea ...

  5. 【游戏开发】Excel表格批量转换成CSV的小工具

    一.前言 在工作的过程中,我们有时可能会面临将Excel表格转换成CSV格式文件的需求.这尤其在游戏开发中体现的最为明显,策划的数据文档大多是一些Excel表格,且不说这些表格在游戏中读取的速度,但就 ...

  6. python处理csv文件问题解决贴

    实际工作中,碰到这么个问题:有个软件跑在linux系统上,其中用到一个数据库是csv格式的,但要向这个数据库添加600行新的数据,数据源同样是一个csv格式的文件. 有了目标,开始干活.首先想到的是, ...

  7. Mongodb 3.4 + Centos6.5 配置 + mysql.sql转为csv 或 json导入和导出Mongo (64位系统)

    Centos下通过yum安装步骤如下: 声明:相对比那些用源码安装,少了配置和新建log和data目录,这种简单粗暴, ,创建仓库文件, vi /etc/yum.repos.d/mongodb-org ...

  8. Python 解析构建数据大杂烩 -- csv、xml、json、excel

    Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据 ...

  9. python3读写csv文件

    python读取CSV文件   python中有一个读写csv文件的包,直接import csv即可.利用这个python包可以很方便对csv文件进行操作,一些简单的用法如下. 1. 读文件 csv_ ...

  10. python用unittest+HTMLTestRunner+csv的框架测试并生成测试报告

    直接贴代码: import csv  # 导入scv库,可以读取csv文件from selenium import webdriverimport unittestfrom time import s ...

随机推荐

  1. POJ1269(KB13-D 计算几何)

    Intersecting Lines Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 16681   Accepted: 71 ...

  2. 5月9日——vue渲染过程中{{xxx}}显示

    异常显示的原因: 这是由于浏览器的渲染机制导致的,浏览器是从头到尾  如果你的js引用在底部,那么浏览器会先加载dom此时,你用于渲染的{{}}识别符,因为还没读到该识别符对应的js文件,所以会被解析 ...

  3. ubuntu 18.04 设置固定ip

    # This file is generated from information provided by # the datasource.  Changes to it will not pers ...

  4. Android 如何执行java命令

    android的程序基于java开发,当我们接上调试器,执行adb shell,就可以执行linux命令,但是却并不能执行java命令. 那么在android的shell中是否就不能执行java程序了 ...

  5. JS截取字符串方法实例

    // JS截取字符串可使用 substring()或者slice() // // 函数:substring() // 定义:substring(start,end)表示从start到end之间的字符串 ...

  6. Python网络爬虫笔记(一):网页抓取方式和LXML示例

    (一)   三种网页抓取方法 1.    正则表达式: 模块使用C语言编写,速度快,但是很脆弱,可能网页更新后就不能用了. 2.    Beautiful Soup 模块使用Python编写,速度慢. ...

  7. Hibernate 拦截器

    拦截器 你已经学到,在 Hibernate 中,一个对象将被创建和保持.一旦对象已经被修改,它必须被保存到数据库里.这个过程持续直到下一次对象被需要,它将被从持久的存储中加载. 因此一个对象通过它生命 ...

  8. 巧用top percent优化top 1

    废话不多说,直接上sql B.CREW_ID, E.CREW_NAME,C.OFFBLK,C.ONBLK,dbo.PEK_OPS_Date(A.STD) as STD FROM dbo.FLIGHTS ...

  9. SQL Server 跨网段(跨机房)通过备份文件初始化复制

    笔者最近碰到了需要搭建跨网段的SQL Server复制,实际的拓扑结构如下草图所示: 发布端A服务器位于CDC机房中 订阅端B服务器位于阿里云 因为SQL Server复制不支持通过IP连接分发服务器 ...

  10. 将 SecondaryNameNode 配置到 s105 节点上

    相关链接  Hadoop 完全分布式安装 0. 说明 SecondaryNameNode 的作用  参考[待补充] 在 Hadoop 完全分布式的基础之上配置 将 SecondaryNameNode ...