2017-07-17 23 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