python 删除csv第一行_python 标准库学习之 csv

本文由作者 海临风 授权刊登。原文地址:https://jeffsui.github.io/2020/01/02/python-standard-library-csv/

文档路径

官方文档:https://docs.python.org/zh-cn/3.8/library/csv.html

CSV 文件格式

文件扩展名为.csv,通用的电子表格文件格式,经常使用在数据分析中。

分隔符可能有所差别。python 中的 csv 模块提供了对 csv 文件的读写操作,非常方便。

csv 常用方法

reader

'excel', ***fmtparams)

返回一个 reader 对象,该对象遍历 csvfile。csv 对象可以是任何对象,只要这个对象支持 iteratable 协议,并在每次调用 __next__() 方法时都返回字符串即可。如果 csvfile 是文件对象,则打开它时应使用 newline=''。可选参数 dialect 是用于不同的 csv 文件类型,它可以是 Dialect 类的子类的实例,也可以是 list_dialects() 函数返回的字符串之一。完整的解释可以参考 csv文件格式参数。

csv 文件的每一行都会默认当做字符串列表解析,除非指定了 QUOTE_NONNUMERIC 格式选项(在这种情况下,未加引号的字段会转换为浮点数),否则不会执行自动数据类型转换。

一个读文件例子

import csv

writer

'excel', **fmtparams)

返回一个 writer 对象,该对象负责将用户的数据在给定的文件类对象上转换为带分隔符的字符串。csvfile 可以是具有 write() 方法的任何对象。如果 csvfile 是文件对象,则打开它时应使用 newline=''

为了尽量简化与数据库 API 模块之间的对接,None 值会写入为空字符串。虽然这个转换是不可逆的,但它让 SQL 空数据值转储到 CSV 文件更容易,而无需预处理从 cursor.fetch* 调用返回的数据。写入前,所有非字符串数据都先用 str() 转化为字符串再写入。

一个写文件例子

import csv

register_dialect

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 模块定义的类

DictReader

class csv.DictReader(*f*, *fieldnames=None*, *restkey=None*, *restval=None*, *dialect='excel'*, **args*, ***kwds*)

创建一个对象,该对象在操作上类似于常规 reader,但是将每行中的信息映射到一个 dict,该 dict 的键由 fieldnames 可选参数给出。

fieldnames 参数是一个 sequence。如果省略 fieldnames,则文件 f 第一行中的值将用作字段名。无论字段名是如何确定的,字典都将保留其原始顺序。

如果某一行中的字段多于字段名,则其余字段将放入列表中,字段名由 restkey 指定(默认为 None)。如果非空白行的字段少于字段名,则缺少的值将用 None 填充。

所有其他可选或关键字参数都传递给底层的 reader 实例。

3.8 中,返回的行是 dict 类型。

一个使用DictReader例子

import csv

DictWriter

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

创建一个对象,该对象在操作上类似常规 writer,但会将字典映射到输出行。fieldnames 参数是由键组成的 序列,它指定字典中值的顺序,这些值会按指定顺序传递给 writerow() 方法并写入文件 f。如果字典缺少 fieldnames 中的键,则可选参数 restval 用于指定要写入的值。如果传递给 writerow() 方法的字典的某些键在 fieldnames 中找不到,则可选参数 extrasaction 用于指定要执行的操作。如果将其设置为默认值 'raise',则会引发 ValueError。如果将其设置为 'ignore',则字典中的其他键值将被忽略。所有其他可选或关键字参数都传递给底层的 writer 实例。

注意,与 DictReader 类不同,DictWriter 类的 fieldnames 参数不是可选参数

一个使用DictWriter 写入文件例子

import csv

其他方法:

  • class csv.Dialect

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

  • 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'

class csv.Sniffer

Sniffer 类用于推断 CSV 文件的格式。

Sniffer 类提供了两个方法:

  • sniff(sample, delimiters=None)

    分析给定的 sample 并返回一个 Dialect 子类,该子类中包含了分析出的格式参数。如果给出可选的 delimiters 参数,则该参数会被解释为字符串,该字符串包含了可能的有效定界符。

  • has_header(sample)

    分析示例文本(假定为 CSV 格式),如果第一行很可能是一系列列标题,则返回 True

一个使用 Sniffer 的例子:

with open(

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

    该异常可能由任何发生错误的函数抛出。

备注

如果没有指定 newline='',则嵌入引号中的换行符将无法正确解析,并且在写入时,使用 \r\n 换行的平台会有多余的 \r 写入。由于 csv 模块会执行自己的(通用)换行符处理,因此指定 newline='' 应该总是安全的。

总结

csv 模块是一个非常实用的处理 csv 文件的标准库,提供了两个核心类。一个是把 csv 文件对象当作字符串列表解析 csv 文件的类,另一个是把 csv 文件对象当作字典解析的类。

End

码农升级

9749637cbbd6fa93977e06b4df53fca7.png

长按二维码关注

9fef9c55daa3a9e5be8bb1d56cae2133.png你点的每个在看,我都认真当成了喜欢

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/340278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea java主题_IDEA变身超级形态,需要这个酷炫主题

码个蛋(codeegg) 第 1090 次推文作者:CodeWhite7链接:https://blog.csdn.net/weixin_46146269/article/details/104793277前言IDEA,全称 IntelliJ IDEA ,是 Java 语言的集成开发环境, IDEA 在业界被公认为是最好的 jav…

百度云盘照片导入华为相册里_必须知道的相册管理工具

相信很多人都会在手机上存许多值得回忆的照片,为了避免丢失,我们常常会使用网盘工具来管理我们的照片,例如,比较常用的有百度网盘、天翼云盘、115网盘这三款工具,那么这三款网盘在相册功能上有什么特色呢?今…

优化自定义函数_Pandas常见的性能优化方法

文章来源于Datawhale ,作者阿水Pandas是数据科学和数据竞赛中常见的库,我们使用Pandas可以进行快速读取数据、分析数据、构造特征。但Pandas在使用上有一些技巧和需要注意的地方,如果你没有合适的使用,那么Pandas可能运行速度非常…

pycharm cant open file_PyCharm

1.创建项目PyCharm是一种Python IDE.PyCharm的功能到底有多强大,我也说不清楚,今天只是介绍一下关于Pycharm创建项目的问题.✦ PyCharm可以将一个文件夹作为工程(或项目)进行打开.如图1所示,先创建两个文件夹(pyc1和pyc2),在文件夹…

如何通过示例使用Java中的Exchanger

大家好,如果您在并发Java应用程序中工作,那么您可能听说过java.util.concurrent包的Exchanger类。 Java中的Exchanger是Java 1.5中与CountDownLatch , CyclicBarrier和Semaphores一起引入的另一个并发或同步实用程序。 顾名思义, …

外星人跑深度学习_上海港汇外星人店,51M2020开光追和DLSS2.0畅玩《赛博朋克2077》...

上海外星人港汇恒隆广场店是外星人布局上海的首家3.0店面,坐落在繁华的徐家汇商圈港汇恒隆广场南座6楼。门店传承了外星人高端高品质,以服务客户为宗旨,立足上海,辐射周边,服务所有外星人客户。近日,让全球…

gwt前台开发_为GWT设置开发环境

gwt前台开发介绍 这是旨在用Java开发跨平台移动应用程序的系列文章的一部分 。 在此博客文章中,我们将了解GWT是什么,并为GWT设置开发环境。 GWT是一个开源开发工具包,用于开发基于浏览器的复杂Ajax应用程序。 使用GWT,您可以用J…

js读取外部json指定字段值完整代码_前端工程化 剖析npm的包管理机制(完整版)...

导读 现如今,前端开发的同学已经离不开 npm 这个包管理工具,其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区,理解其内部机制非常有利于加深我们对模块开发的理解、各项前端工程化的配置以加快我们排查问题(相信不少同学收到过各种依赖…

机箱硬盘指示灯不亮_安钛克DF600 FLUX机箱:FLUX平台第一款机箱,为全民电竞热“降温”...

随着夏天的到来,电脑对散热的要求越来越高,特别是对于希望游戏的电竞玩家,不久前China Joy全球电竞大会的落幕,“全民电竞”这个概念再一次深入人心,而一名电脑主机电竞玩家,势必需要一款散热效果更好的机箱…

java ee maven_针对新手的Java EE7和Maven项目–第7部分

java ee maven从前面的部分恢复 第1 部分 , 第2 部分 , 第3 部分 , 第4 部分 , 第5 部分 , 第6部分 在上一篇文章(第6章)中,我们发现了如何使用Arquillian和Wildfly 8.1进行JPA2域模…

链表node中保存的是什么_Redis源码解析一 --链表结构

Redis源码剖析—链表结构1. redis中的链表在redis中链表的应用非常广泛,例如列表键的底层实现之一就是链表。而且,在redis中的链表结构被实现成为双向链表,因此,在头部和尾部进行的操作就会非常快。通过列表键的命令感受一下双向链…

python数据分析方法和命令_《利用Python进行数据分析》 —— (1)

《利用Python进行数据分析》 —— (1) Python的学习需要自主探索各种类型,函数和方法的文档。 2.1 Python解释器 在IPython(Jupyter Qtconsole)上,可以通过%run命令执行文件中的代码 In [16]: %run hellow.py 1,2,3 10…

用python找对象_还在单身的你 Python教你如何脱单

程序员有女朋友?new一个就行。Python只要内存够,想new多少个对象都不是问题。由于行业环境的原因,程序员单身的确实多,这也是程序员的世纪难题。今天,不是给大家发对象,只教大家方法。今天教大家怎么用Pyth…

系统页面升级系统中_中交出行通勤班线系统全新升级!页面亮点功能说明

最近,中交出行上线了全新版本的通勤班线系统,乘客端定制班线首页及购票流程界面全新改版,车企后台也做了优化。一起来看看有哪些亮点吧!首页、搜索结果页等,已绑定微信的老用户,无感知的自动登录。通勤班线…

mysql log_来吧,了解下mysql有哪些log

概述mysql里面有很多log,比如用于主从同步的bin_log,防止数据丢失的redo_log,慢查询日志slow_log等等redo logInnoDB有buffer pool(简称bp)。bp是数据库页面的缓存,对InnoDB的任何修改操作都会首先在bp的page上进行,然…

为什么jupyterlab运行程序的时候会自动停止_气象人的JupyterLab

上两篇文章Jupyterlab安装配置教程Jupyter多用户配置中讲了Jupyter的主要部署方法,老实说,对新手很不友好,我也不想再经历一次这样的过程,尤其是Basemap的安装。所以,咱直接打包个镜像吧。不得不说Docker真是个拯救了无…

bfc是什么_全面分析总结BFC原理及实践

前言 经常在面试中被问到“如何清除浮动?”、“为什么 overflow: hidden 可以清除浮动?”等等比较基础的问题。虽然这些题目案在各种写面试题的文章中都有提供答案,但这种教科书式的问答肯定不是我们的目的,与其记住答案不如彻底掌…

学会了很多计算机小技巧,超实用的八个电脑小技巧,全都学会让你成为电脑高手...

Part one 截屏我们在使用电脑的过程中,有时候会使用截屏功能。AltCtrlA诶?怎么不行?原来这是QQ特有的快捷键,如果不登录QQ的话,是使用不了的。那么我们就只能先登录QQ,然后再一步步的操作。那在没网的情况下…

mysql从库执行delete停止_MySQL主库大表执行delete语句,Ctrl+C具体发生了什么分析...

MySQL主库大表执行delete语句,CtrlC具体发生了什么分析1、查看表结构localhost.qt>show create table doctor_stats_backup\G*************************** 1. row ***************************Table: doctor_stats_backupCreate Table: CREATE TABLE doctor_stat…

python打开火狐浏览器打不开网页_PHP让指定网页只能在微信内置浏览器打开 附代码...

有时候,有些网页不方便在电脑或者手机QQ打开,比如:想创建一个微信活动页面,在电脑或者QQ打开会导致某些功能失效,页面错版等情况,为了避免出现这种情况,其实我们只需让它只能在微信打开就可以了…