版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
CSV格式文件操作1.CSV文件格式CSV是CommaSeperatedValues(逗号分隔值)的英文缩写,CSV文件是一种用来存储二维数据的纯文本文件。文件中的每一行都是一条数据记录,每条记录由一个或多个字段组成,字段之间用分隔符分隔,默认用逗号分隔,使用逗号作为字段分隔符是CSV文件格式的名称的来源。字段间分隔符也可以使用其它分隔符。2.普通方式读写CSV文件因CSV格式的文件就是一个文本文件,可以按照前面所讲的文本文件的操作来对其进行读写。【例STYLEREF1\s7SEQ例\*ARABIC\s112】CSV文件的读写。新建一个csv文件,往文件中写入内容,代码如下所示:datas=['王芳,90,88\n','刘敏,98,78\n','孙扬,87,76\n']withopen('d:/score.csv','w',encoding='utf-8')asfp:fp.writelines(datas)程序运行后生成一个score.csv文件,其内容如REF_Ref535680582\h图77所示。图STYLEREF1\s7SEQ图\*ARABIC\s17score.csv文件内容将score.csv文件中内容读取出来并显示,代码如下所示:withopen('d:/score.csv','r',encoding='utf-8')asfp:datas=fp.read().split('\n')fordataindatas:print(data)【运行结果】王芳,90,88刘敏,98,78孙扬,87,76提示:有些CSV文件中只存放数据,不存放字段名,也即没有表头,如上例中创建的score.csv文件。有些CSV文件的第一行是字段名,从第二行开始才是真正的数据,也即是带表头的文件。CSV文件中需不需要存放表头根据实际使用情况来选择。【例STYLEREF1\s7SEQ例\*ARABIC\s113】带表头的CSV文件的读写。新建一个带表头的CSV文件,代码如下所示:headers='姓名,语文,数学\n'datas=['王芳,90,88\n','刘敏,98,78\n','孙扬,87,76\n']withopen('d:/score1.csv','w',encoding='utf-8')asfp:fp.write(headers)fp.writelines(datas)程序运行后生成一个score1.csv文件,其内容如REF_Ref61705556\h图78所示:图STYLEREF1\s7SEQ图\*ARABIC\s18score1.csv文件内容将score1.csv文件内容读取出来并显示,代码如下所示。withopen('d:/score1.csv','r',encoding='utf-8')asfp:datas=fp.read().split('\n')fordataindatas:print(data)【运行结果】姓名,语文,数学王芳,90,88刘敏,98,78孙扬,87,763.使用csv模块操作CSV文件因CSV文件是一个有格式的文本文件,如采用普通文本文件的方式来操作相对烦锁,为简化CSV文件的操作,可利用Python的标准模块csv提供的方法来操作。(1)csv模块的读操作csv模块提供了两个方法reader()和DictReader()用于读取CSV文件。1)reader()方法格式:csv.reader(csvfile)返回结果为一可迭代reader对象,对象中的每一项是包含文件中一行的字符串列表。【例STYLEREF1\s7SEQ例\*ARABIC\s114】利用reader()方法读取score.csv文件中内容。importcsvwithopen('d:/score.csv','r',encoding='utf-8')asfp:datas=csv.reader(fp)#利用reader()方法读取文件内容fordataindatas:#输出文件内容print(data)【运行结果】['王芳','90','88']['刘敏','98','78']['孙扬','87','76']不论是有表头还是没有表头的CSV文件,都可以用reader()方法读取。【例STYLEREF1\s7SEQ例\*ARABIC\s115】利用reader()方法读取score1.csv文件。importcsvwithopen('d:/score1.csv','r',encoding='utf-8')asfp:datas=csv.reader(fp)fordataindatas:print(data)【运行结果】['姓名','语文','数学']['王芳','90','88']['刘敏','98','78']['孙扬','87','76']在读带有表头的CSV文件时,如果不想读取表头数据,可先使用next()函数跳过第一行表头数据。【例STYLEREF1\s7SEQ例\*ARABIC\s116】读取score1.csv文件内容,跳过表头数据。importcsvwithopen('d:/score1.csv','r',encoding='utf-8')asfp:datas=csv.reader(fp)next(fp)#跳过表头fordataindatas:print(data)【运行结果】['王芳','90','88']['刘敏','98','78']['孙扬','87','76']提示:对于带表头的数据用DictReader()读取更加方便。2)DictReader()方法格式:csv.DictReader(csvfile)DictReader()方法适用于带表头数据的读取,返回结果是一可迭代DictReader对象,以字典形式存放文件中的每一行数据,自动以第一行数据作为字典中的键。【例STYLEREF1\s7SEQ例\*ARABIC\s117】利用DictReader()方法读取score1.csv文件importcsvwithopen('d:/score1.csv','r',encoding='utf-8')asfp:datas=csv.DictReader(fp)fordataindatas:print(data)【运行结果】OrderedDict([('姓名','王芳'),('语文','90'),('数学','88')])OrderedDict([('姓名','刘敏'),('语文','98'),('数学','78')])OrderedDict([('姓名','孙扬'),('语文','87'),('数学','76')])使用csv模块提供的reader()和DictReader()方法可方便地读取文件中指定的列,reader()方法的返回结果是一列表,故可通过下标方式来获取某一列,而DictReader()的返回结果是一字典,故可通过键来获取某一列。【例STYLEREF1\s7SEQ例\*ARABIC\s118】读取score1.csv文件中的姓名和数学成绩这两列数据。importcsvprint('使用reader()读取结果:')withopen('d:/score1.csv','r',encoding='utf-8')asfp:datas=csv.reader(fp)next(fp)fordataindatas:print(data[0],data[2])print('使用DictReader()读取结果:')withopen('d:/score1.csv','r',encoding='utf-8')asfp:datas=csv.DictReader(fp)fordataindatas:print(data['姓名'],data['数学'])【运行结果】使用reader()读取结果:王芳88刘敏78孙扬76使用DictReader()读取结果:王芳88刘敏78孙扬76(2)csv模块的写操作csv模块同样提供了两种不同方式来写CSV文件,一个是利用writer()方法,另一个是利用DictWriter()方法。1)writer()方法格式:csv.writer(csvfile)writer()方法的返回值是一个writer对象,该writer对象又提供了writerow()和writerows()方法用于把数据写入到文件中。writerow()方法一次写入一行数据,writerows()一次可写入多行数据。要写入的数据是一个字符串列表。【例STYLEREF1\s7SEQ例\*ARABIC\s119】利用write()方法将数据写入到文件score2.csv中。importcsvheaders=['姓名','语文','数学']datas=[['王芳','90','88'],['刘敏','98','78'],['孙扬','87','76']]withopen('d:/score2.csv','w',encoding='utf-8',newline='')asfp:writer=csv.writer(fp)writer.writerow(headers)writer.writerows(datas)程序运行后生成了一个score2.csv文件,其内容如REF_Ref535690126\h图79所示。图STYLEREF1\s7SEQ图\*ARABIC\s19score2.csv文件内容提示:在写入文件时,默认newline='\n',即写入一行就会插入一换行,造成数据行与行之间存在多余的空白行,通过将newline值设为空来将空白行去掉。2)DictWriter()方法格式:csv.DictWriter(csvfile,headers)说明:第一个参数是文件指针,第二个参数是表头信息。返回结果是一个DictWriter对象,该对象同样提供了writerow()和writerows()来分别写入一行或多行数据,另外还提供了writeheader()方法来写入表头。要写入的数据是放在字典中。【例STYLEREF1\s7SEQ例\*ARABIC\s120】利用DictWriter()方法写数据到score3.csv文件中。importcsvheaders=['姓名','语文','数学']datas=[{'姓名':'王芳','语文':'90','数学':'88'},{'姓名':'刘敏','语文':'98','数学':'78'},{'姓名':'孙扬','语文':'87','数学':'76'}]data={'姓名':'赵明','语文':'82','数学':'86'}withopen('d:/score3.csv','w',encoding='utf-8',newline='')asfp:dwrit
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 跨境电商关税代理合同(化妆品类2025年)
- 跨境电商独立站域名备案协议2025年责任版
- 跨境电商2025年跨境电商保税仓物流合作协议
- 口罩生产供应协议2025年样品确认
- 2025年办公楼电梯系统服务协议
- 2025年IT行业兼职工作合同协议
- 铁路面试题及答案
- 汛期安全面试题目及答案
- 护士如何备考面试题目及答案
- 深度解析(2026)《GBT 35205.5-2021越野叉车 安全要求及验证 第5部分:伸缩臂式叉车和集成式人员工作平台的连接装置》
- 招聘及面试技巧培训
- 贵州兴义电力发展有限公司2026年校园招聘考试题库附答案
- 2025年水果连锁门店代理合同协议
- 朱棣课件教学课件
- 农业推广计划课件
- 苏教版四年级数学上册期末考试卷(附答案)
- 血脂分类及临床意义
- 2025年校长述职:把一所学校办成“看得见成长”的地方
- 加油站运营管理实习心得体会
- 太阳能光伏板清洗设备安装施工方案
- 柴油供油合同协议书
评论
0/150
提交评论