文本文件难免存在畸形行
!cat ex7.csv
"a","b","c"
"1","2","3"
"1","2","3","4"
python内置的csv模块,可以将任意已打开的文件或文件型对象传给csv.reader
import csv
f = open('ex7.csv')
reader = csv.reader(f)
for line in reader:
print(line)
对reader迭代会为每行产生一个元组(并移除所有的引号)
['a', 'b', 'c']
['1', '2', '3']
['1', '2', '3', '4']
对数据做一些整理工作
lines = list(csv.reader(open('ex7.csv')))
header, values = lines[0], lines[1:]
data_dict = {h: v for h, v in zip(header, zip(*values))}
data_dict
{'a': ('1', '1'), 'b': ('2', '2'), 'c': ('3', '3')}
定义csv新格式
class my_dialect(csv.Dialect):
lineterminator = '\n'
delimiter = ';'
quotechar = '"'
quoting = csv.QUOTE_MINIMAL
写入新数据
with open('mydata.csv', 'w') as f:
writer = csv.writer(f, dialect=my_dialect)
writer.writerow(('one', 'two', 'three'))
writer.writerow(('1', '2', '3'))
writer.writerow(('4', '5', '6'))
writer.writerow(('7', '8', '9'))
查看处理后的数据集
%cat mydata.csv
one;two;three
1;2;3
4;5;6
7;8;9