2017-07-17 43 views
1

我有一个CSV与数据格式拆分CSV(不是均匀的)转换成2所列出

1,2,3,4,A 
2,3,B 
1,4,5,6,C 
5,D 

等。我如何分割它并将它们分配给python列表。 csv中每行的长度是任意的。我需要把它们分成

[[1,2,3,4],[2,3],[1,4,5,6],[5]] 

,其余为Python列表

['A','B','C','D'] 

什么是完成这件事的有效途径。下面的代码足以将csv转换为列表列表,但包含最后一个元素。我想在一个单独的列表中最后一个元素

with open('dataset.csv', 'r') as fp: 
    reader = csvreader(fp) 
    li = list(reader) 

回答

4

你可以通过读者对象和分裂迭代/解压项目到所有除最后最后一个项目项目。

with open('dataset.csv', 'r') as fp: 
    reader = csv.reader(fp) 
    lst1, lst2 = [], [] 
    for row in reader: 
     *others, last = row # Python 2: others, last = row[:-1], row[-1] 
     lst1.append(others) 
     lst2.append(last) 
+2

或'*为他人,最后在reader'直接。 –

+1

@ Jean-FrançoisFabre是的,这将避免额外的旅程,但是接下来的Python 2替代品将没有留下:) –

0

试试这个:

import csv 

with open('test.csv') as csvfile: 
    readCSV = csv.reader(csvfile, delimiter=',', skipinitialspace=True) 
    list1 = [] 
    list2 = [] 
    for row in readCSV: 
     list1.append(row[:-1]) 
     list2.append(row[-1]) 
print list1 
print list2