文本文件难免存在畸形行

!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

results matching ""

    No results matching ""