【Python】Python处理csv文件
本文内容纲要:
-Python处理csv文件
-从CSV文件中读取数据
-写数据到csv文件中
-DictReader和DictWriter对象
Python处理csv文件
CSV(Comma-SeparatedValues)即逗号分隔值,可以用Excel打开查看。由于是纯文本,任何编辑器也都可打开。与Excel文件不同,CSV文件中:
- 值没有类型,所有值都是字符串
- 不能指定字体颜色等样式
- 不能指定单元格的宽高,不能合并单元格
- 没有多个工作表
- 不能嵌入图像图表
在CSV文件中,以,
作为分隔符,分隔两个单元格。像这样a,,c
表示单元格a
和单元格c
之间有个空白的单元格。依此类推。
不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。Python内置了csv模块。先看看一个简单的例子。
从CSV文件中读取数据
importcsv
filename='F:/JupyterNotebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'withopen(filename)asf:reader=csv.reader(f)print(list(reader))
data
不能直接打印,list(data)最外层是list,里层的每一行数据都在一个list中,有点像这样
[['name','age'],['Bob','14'],['Tom','23'],...]
于是我们可以这样访问到Bob的年龄reader[1][1]
,在for循环中遍历如下
importcsv
filename='F:/JupyterNotebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'withopen(filename)asf:reader=csv.reader(f)forrowinreader:#行号从1开始print(reader.line_num,row)
截取一部分输出
1['AKST','MaxTemperatureF','MeanTemperatureF','MinTemperatureF','MaxDewPointF','MeanDewPointF','MinDewpointF','MaxHumidity','MeanHumidity','MinHumidity','MaxSeaLevelPressureIn','MeanSeaLevelPressureIn','MinSeaLevelPressureIn','MaxVisibilityMiles','MeanVisibilityMiles','MinVisibilityMiles','MaxWindSpeedMPH','MeanWindSpeedMPH','MaxGustSpeedMPH','PrecipitationIn','CloudCover','Events','WindDirDegrees']2['2014-1-1','46','42','37','40','38','36','97','86','76','29.95','29.77','29.57','10','8','2','25','14','36','0.69','8','Rain','138']...
前面的数字是行号,从1开始,可以用reader.line_num
获取。
要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用next
方法一次获取一行。
importcsv
filename='F:/JupyterNotebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'withopen(filename)asf:reader=csv.reader(f)#读取一行,下面的reader中已经没有该行了head_row=next(reader)forrowinreader:#行号从2开始print(reader.line_num,row)
写数据到csv文件中
有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。
importcsv
#使用数字和字符串的数字都可以
datas=[['name','age'],['Bob',14],['Tom',23],['Jerry','18']]withopen('example.csv','w',newline='')asf:writer=csv.writer(f)forrowindatas:writer.writerow(row)#还可以写入多行writer.writerows(datas)
如果不指定newline=''
,则每写入一行将有一空行被写入。上面的代码生成如下内容。
name,age
Bob,14
Tom,23
Jerry,18
name,ageBob,14Tom,23Jerry,18
DictReader和DictWriter对象
使用DictReader可以像操作字典那样获取数据,把表的第一行(一般是标头)作为key。可访问每一行中那个某个key对应的数据。
importcsv
filename='F:/JupyterNotebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv'withopen(filename)asf:reader=csv.DictReader(f)forrowinreader:#MaxTemperatureF是表第一行的某个数据,作为keymax_temp=row['MaxTemperatureF']print(max_temp)
使用DictWriter类,可以写入字典形式的数据,同样键也是标头(表格第一行)。
importcsv
headers=['name','age']datas=[{'name':'Bob','age':23},{'name':'Jerry','age':44},{'name':'Tom','age':15}]withopen('example.csv','w',newline='')asf:#标头在这里传入,作为第一行数据writer=csv.DictWriter(f,headers)writer.writeheader()forrowindatas:writer.writerow(row)#还可以写入多行writer.writerows(datas)
就先了解到这儿。
本文内容总结:Python处理csv文件,从CSV文件中读取数据,写数据到csv文件中,DictReader和DictWriter对象,
原文链接:https://www.cnblogs.com/yanglang/p/7126660.html