当前第2页 返回上一页
不是每个逗号都表示单元格之间的分界。所以即使CSV是纯文本文件,也坚持使用专门的模块进行处理。Python内置了csv模块。先看看一个简单的例子。
从CSV文件中读取数据
1 2 3 4 | import csv
filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv' with open(filename) as f:
reader = csv.reader(f)print(list(reader))
|
data
不能直接打印,list(data)最外层是list,里层的每一行数据都在一个list中,有点像这样
1 | [[ 'name' , 'age' ], [ 'Bob' , '14' ], [ 'Tom' , '23' ], ...]
|
于是我们可以这样访问到Bob的年龄reader[1][1]
, 在for循环中遍历如下
1 2 3 4 | import csv
filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv' with open(filename) as f:
reader = csv.reader(f) for row in reader:# 行号从1开始 print (reader.line_num, row)
|
要注意的是,reader只能被遍历一次。由于reader是可迭代对象,可以使用next
方法一次获取一行。
1 2 3 4 | import csv
filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv' with open(filename) as f:
reader = csv.reader(f)# 读取一行,下面的reader中已经没有该行了head_row = next(reader) for row in reader:# 行号从2开始 print (reader.line_num, row)
|
写数据到csv文件中
有reader可以读取,当然也有writer可以写入。一次写入一行,一次写入多行都可以。
1 2 3 4 5 6 | import csv# 使用数字和字符串的数字都可以datas = [[ 'name' , 'age' ],
[ 'Bob' , 14],
[ 'Tom' , 23],
[ 'Jerry' , '18' ]]with open( 'example.csv' , 'w' , newline= '' ) as f:
writer = csv.writer(f) for row in datas:
writer.writerow(row) # 还可以写入多行writer.writerows(datas)
|
如果不指定newline=''
,则每写入一行将有一空行被写入。上面的代码生成如下内容。
1 2 3 4 5 6 7 8 | name,age
Bob,14
Tom,23
Jerry,18
name,age
Bob,14
Tom,23
Jerry,18
|
DictReader和DictWriter对象
使用DictReader可以像操作字典那样操作数据,把表的第一行(一般是标头)作为key。使用key可访问行中那个key对应的数据。
1 2 3 4 | import csv
filename = 'F:/Jupyter Notebook/matplotlib_pygal_csv_json/sitka_weather_2014.csv' with open(filename) as f:
reader = csv.DictReader(f) for row in reader:# Max TemperatureF是表第一行的某个数据,作为keymax_temp = row[ 'Max TemperatureF' ] print (max_temp)
|
使用DictWriter类,可以写入字典形式的数据,同样键也是标头(表格第一行)。
1 2 3 4 5 6 7 8 9 10 | import csv
headers = [ 'name' , 'age' ]
datas = [{ 'name' : 'Bob' , 'age' :23},
{ 'name' : 'Jerry' , 'age' :44},
{ 'name' : 'Tom' , 'age' :15}
]with open( 'example.csv' , 'w' , newline= '' ) as f:# 标头在这里传入,作为第一行数据writer = csv.DictWriter(f, headers)
writer.writeheader() for row in datas:
writer.writerow(row) # 还可以写入多行writer.writerows(datas)
|
以上就是Python处理csv文件实例详解的详细内容,更多文章请关注木庄网络博客!!
返回前面的内容
相关阅读 >>
linux下如何安装Python
Python复数的虚部怎么表达
总结 Python十大常用文件操作
什么是Python number(数字)?Python数字类型有哪些?
Python不支持的数据类型有哪些
Python实现决策树算法
Python的web服务器相关知识点
Python实现从序列中移除重复项且保持元素间顺序不变
Python简介及入门指导
如何用Python正则表达式匹配字符串?
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » Python处理csv文件实例详解