使用Python对Csv文件操作.pdf
使用Python对Csv文件操作csv是Comma-SeparatedValues的缩写,是用文本文件形式储存的表格数据,比如如下的表格:12345 A B INo.liame 1 mayi 2 jack 3 tom 4 rain C Age D Score 18 21 25 19 99 89 95 80 就可以存储为csv文件,文件内容是:No.,Name,Age,Scorel,mayi,18,99 2,jack,21,89 3,tom,25,95 4,rai n,19,80 假设上述csv文件保存为test.csv1读文件如何用Python像操作Excel一样提取其中的一列,v模块,有两种方法可以实现:即一个字段,利用Python自带的cs第一种方法使用reader函数,接收一个可迭代的对象(比如csv文件),能返回一个生成器,就可以从其中解析出csv的内容:比如下面的代码可以读取csv的全部内容,以行为单位:#!/usr/bin/python3#-*-coding:utf-8-*-author=mayi irnpor七csv读with open(test.csv,r ,encoding=utf-8)as f:reader=csv.reader(f)rows=row for row in reader print(rows)主得到:No.,Name ,Age,Scor e l,1 ,mayi,18,99 ,2 ,jack,21,8 9 l,3 ,tom,25,95,4 ,r a i n ,19,80 要提取其中某一列,可以用下面的代码:#!/us r/bin/python3#-*-coding:utf-8 _*_ author,.may.,i mpor t csv 读取第列的内容with open(test.csv,r ,encoding=utf-8)as f:reader=csv.reader(f)column=rowl for row in reader print(col umn)得到:Name ,mayi,jack,tom,rain 注意从csv读出的都是str类型。这种方法要事先知道列的序号,比如Name在第2列,而不能根据Name这个标题查询。这时可以采用第二种方法:第二种方法是使用DictReader,和reader函数类似,接收一个可迭代的对象,能返回一个生成器,但是返回的每一个单元格都放在一个字典的值内,而这个字典的键则是这个单元格的标题(即列头)。用下面的代码可以看到DietReader的结构:乌一coding:utf-8-*-autho工,:mayi import csv 读with open(test.csv,r ,e ncoding=utf-8)as f:reader=csv.DictReader(f)col umn r ow for row in reader print(col umn)比得到:No.:1 ,Age:18,Score:99,Name :mayi,No.:2 ,Age:21,Score:89,Name :jack,No.:3 ,Age:25,Score:95,Name :tom,No.:4 ,Age:19,Score:80,Name :rain 如果我们想用DictReader读取csv的某一列,就可以用列的标题查询:#!/usr/bin/python3 立coding:utf-8-*-au七hor,.mayi,i mpor t csv 读取Name列的内容with open(test.csv,r ,encoding=utf-8)as f:reader=csv.DictReader(f)col umn=row Name f or row in reader print(column)团得到:mayi,jack,tom,jack,tom,rain 2写文件读文件时,我们把csv文件读入列表中,写文件时会把列表中的元素写入到csv文件中。4.#!/usr/bin/py七hon3非一coding:utf-8-*-author,.rnayi import csv 写:追加row=5,hanme耳nei ,2 3 ,81 out=open(test.csv,a ,newline=)csv_writer=csv.writer(ou七,dialec七“excel)csv_writer.writerow(row)得到:A 123456-No.B Name 1 mayi 2 jack 3 t om 4 rain 5 haruneimei Age c D Score 18 21 25 19 23 _T 99501 98988