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

7c0921d186ff07127df1a7ccefd5e508.png

源代码: 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该异常可能由任何发生错误的函数抛出

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

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

相关文章

持续交付三:动手自动化“开发”—“测试”

前两篇博文中提到Development,QA,Staging,Production四个环境,也说明了源代码的分支和四个环境的对应关系,本篇博文聊一下,怎么把源码自动化发布到对应的环境中。市面上主流的DevOpt工具都支持这些功能,github,gitlab,…

如何把python文件发给别人没_如何把自己写的python程序给别人用

这里讲的给别人用,不是指将你的代码开源,也不是指给另一个程序员用。。。。。 前段时间写了个程序,输入URP学生系统的账号和密码,输出课表、绩点之类的信息,想给同学用,但是总不能叫别人也去装python吧。。…

使用WebBenchmark对webapi进行管理和性能测试

WebBenchmark是基于beetlex开发的webapi管理和性能测试软件,最新版本1.0.3可以独立运行在linux/windows中,并不再需要安装.net core运行环境。部署可以通过以下地址下载最新版本:https://github.com/IKende/WebBenchmark可以根据需要下载linux64或win64运…

三维叉乘怎么算_奇技淫巧系列:向量叉乘

​一般我们在解决立体几何题目时会选择建立坐标系,因为这样做比较保险也有固定套路。很多时候这些题目要求你计算某一个面的法向量(normal vector),这在高中阶段也是有固定方法的,我们这里想要介绍的是一种更高级也更迅…

g++ linux intel 汇编,g++ linux

目标:运行C代码example:有func.h,func.cpp, main.cpp- .h无需编译,但.h中函数实现的地方需要编译(func.cpp)- 逻辑:cpp各自生成可执行文件(.o),再进行链接g -c func.cppg -c main.cppg main.o func.o -o test或者直接:…

提高python执行效率_提升Python程序运行效率的6个方法

Python是一个很酷的语言,因为你可以在很短的时间内利用很少的代码做很多事情。不仅如此,它还能轻松地支持多任务,比如多进程等。Python批评者有时会说Python执行缓慢。本文将尝试介绍6个技巧,可加速你的Python应用程序。 1.让关键…

听说容器正在吃掉整个软件世界?

过去几年,以 docker、kubernetes 为代表的容器技术已发展为一项通用技术,BAT、滴滴、京东、头条等大厂,都争相把容器和 k8s 项目作为技术重心,试图“放长线钓大鱼”。就说腾讯吧,目前基本所有业务都跑在云上&#xff0…

linux 短信功能,Android调用系统短信功能发送短信

Android调用系统短信功能发送短信有两种方法:第一种,设定发送的号码,和内容,界面没有联系人,群组组等按钮,如下图所示:代码如下:Uri smsToUri Uri.parse("smsto:114");// 联系人地址…

浅析 EF Core 5 中的 DbContextFactory

EF Core 5 中的 DbContextFactoryIntro使用过 EF Core 大多都会遇到这样一个场景,希望能够并行查询,但是如果使用同一个 DbContext 实例进行并行操作的时候就会遇到一个 InvalidOperationException 的异常,在 EF Core 2.x/3.x 版本中&#xf…

bcm943602cs蓝牙用不了_原来手机的蓝牙功能这么强大!除了连接耳机,还有这六大实用功能...

蓝牙是手机上的一个普通功能,基本上所有的手机里都有它,原先它的作用很有限,只是用来传输数据,但由于速度太慢,最后也是被软件所淘汰,慢慢的可以用来连接耳机,这也是博主用的比较多的一个功能&a…

c语言数字字母和字符串,C语言字符串用法之字符串和数字的转换

把字符串转换为数字1.考虑字符串除最后一个都是数字,如236\0int strToInt(const char *str){int temp 0;const char *ptr str; //ptr保存str字符串开头while(*str ! 0){temp temp * 10 (*str - 0);//根据ASCII码的数学关系把字符转换为数字str;}return temp;}2.…

数据结构——表达式求值(中序)

表达式求值(中序) 实验二 基于栈的中缀算术表达式求值 【实验目的】 1.掌握栈的基本操作算法的实现,包括栈初始化、进栈、出栈、取栈顶元素等。 2.掌握利用栈实现中缀表达式求值的算法。 【实验内容】 问题描述 输入一个中缀算术表达式,求解表达式的值。…

msdn画圆弧函数_画直线不简单!python-matplotlib告诉你为什么

1 说明:1.1 python的matplotlib画直线,看似简单,其实很难,从简单到复杂,逐步深入,小白秒懂。1.2 内容:画直线,画圆,画圆点,动画的单摆和圆套圆,好…

Wifi6网络

2020年是Wifi6设备全面爆发的一年,华为、小米、华硕、腾达、TP-LINK、360等多家厂商相继发布了Wifi6路由产品,掀起了一股更换路由器的热潮。首先,我们先来看几个常识1、Wifi6和IPv6两个没有必然联系,Wifi6是一种支持802.11ax的Wif…

c语言字符串中取最大字符串,使用C语言提取子字符串及判断对称子字符串最大长度...

先来看一个使用C语言从字符串中提取子字符串的基本方法总结:#include /*处理中文字符*//*遍历字符串,非ASCII字符读取2个字节,ASCII读取一个字节,获取字符串长度*/int StrLenU(const char* string){int len 0 ;const char* p st…

数据结构——用栈解决回文字符问题

回文 回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否为回文。(提示:将一半字符入栈。) 所需的知识前提:栈 以下是顺序栈的基本算法 结构…

aspose excel中文文档_除了VBA,还有哪些编程语言可以操作Excel文件?

Excel(Microsoft office)是现在最常用的办公软件,主要涉及电子表格制作、数据处理、报表输出展示以及更高端的还有金融建模等;我们知道,在需要批处理多个Excel工作表以及工作簿的时候,需要用到一个自动化的利器:VBAVBA…

关于.NET5在IIS中部署的几个问题总结

本来我的系列教程已经慢慢剥离开IIS了,毕竟有了Docker容器以后,配合Nginx使用真的很不错。但是还是有很多同学使用IIS的,这个不可否认IIS的重要性。随着.NET的发布,很多小伙伴已经开始升级了,我也就陆陆续续收到了一些…

上海市二级c语言软件环境,上海市计算机二级C语言复习资料 word整理版.doc

上海市高等学校计算机等级考试二级(C程序设计)03年上海市高等学校计算机等级考试试卷二级 (C程序设计)(本试卷答卷时间为120分钟)试题一(28分,每小题4分)解答下列各小题,把正确的解答写在答卷纸的对应栏内。设有变量说明:int a5,b4,c3,r1,r2;…

数据结构——括号匹配问题

括号匹配 给定一个字符串,其中的字符只包含三种括号:花括号{ }、中括号[ ]、圆括号( ),即它仅由 “( ) [ ] { }” 这六个字符组成。设计算法,判断该字符串是否有效,即字符串中括号是否匹配。括号匹配要求括号必须以正…