我有以下格式的CSV文件:
1,data,data2,data3.....
1,data,data2,data3.....
2,data,data2,data3.....
2,data,data2,data3.....
3,data,data2,data3.....
3,data,data2,data3.....
我需要通过offset [0]将这些字符串分块到一个列表中,以便我得到多个列表:
1,data,data2,data3.....
1,data,data2,data3.....
和另一个:
2,data,data2,data3.....
2,data,data2,data3.....
等。我有以下代码:
import csv
filename = 'somefile.csv'
with open(filename) as csv_file:
readCSV = csv.reader(csv_file, delimiter=',')
chunk1 = []
for row in csv_file:
if row[0] is '1':
print(row)
else:
break
这只给出了第一个块我需要调整它以获得列表中相同集合的所有块。
答案 0 :(得分:1)
假设它们按第一列排序,这样就可以了:
import csv
from itertools import groupby
from operator import itemgetter
filename = 'somefile.csv'
with open(filename) as csv_file:
csvreader = csv.reader(csv_file, delimiter=',')
chunks = [list(g) for k, g in groupby(csvreader, itemgetter(0))]
答案 1 :(得分:0)
使用字典聚合所有块。如果您需要将其保留在阅读顺序中,请使用OrderedDict
。
import csv
filename = 'somefile.csv'
with open(filename) as csv_file:
readCSV = csv.reader(csv_file, delimiter=',')
chunks = {}
for row in csv_file:
if row[0] not in chunks:
chunks[row[0]] = []
chunks[row[0]].append(row)