python的csv模块使用:读文件
要玩一个小的数据处理加绘图,我将数据保存成立csv的格式,用python自带的csv模块,这里记录一下学习的笔记。这里只用到了读取
python:3.8.10
参考文档:官方文档。官方文档很好用,而且有中文,推荐大家去看。
1. 读文件
以文件 ‘时间统计.csv’ 为例,格式如下。注意到我们这里使用 "|" 分割的。
data|week|start-time|stop-time 2021/10/30|周六|13:42|16:23 2021/10/30|周六|21:33|22:21 2021/10/31|周日|16:00|17:14 2021/10/31|周日|20:30|22:34 2021/11/1|周一|13:23|16:23
有两种读的方式:csv.reader() 和 csv.DictReader()。先直观看看两者的区别:
import csv with open('时间统计.csv', encoding = 'utf-8', newline = '') as file: data1 = csv.reader(file, delimiter='|') data2 = csv.DictReader(file, delimiter='|') for row in data1: # for row in data2: print(row) # 参数 delimiter,分隔符的选择,默认是逗号,此时为delimiter = ' '(中间有个空格)
# 参数 delimiter 属于 csv 的 dialect 类,dialect 类本身对于 reader 和 DictReader 对象来说是只读的
# csv.reader 的输出:列表的形式 ['data', 'week', 'start-time', 'stop-time'] ['2021/10/30', '周六', '13:42', '16:23'] ['2021/10/30', '周六', '21:33', '22:21'] ['2021/10/31', '周日', '16:00', '17:14'] # csv.DictReader 的输出:字典的形式,并且把我设定的首段默认为键,每一列对应的为键值 {'data': '2021/10/30', 'week': '周六', 'start-time': '13:42', 'stop-time': '16:23'} {'data': '2021/10/30', 'week': '周六', 'start-time': '21:33', 'stop-time': '22:21'}
2. reader 对象和DictReader 对象的参数
reader:data1.line_num 已经读取的行数
DictReader:data2.line_num 已经读取的行数,data2.fieldnames 返回键的列表。
# 在原有代码的基础上加下面这行 print(data2.fieldnames)
# 输出为 ['data', 'week', 'start-time', 'stop-time']