首页 文章资讯内容详情

【Python】Python处理csv文件

2026-06-01 4 花语

本文内容纲要:

-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.csvwithopen(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.csvwithopen(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.csvwithopen(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.csvwithopen(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