2017-07-17 3 views
1

Ich habe eine CSV mit Daten im FormatSplit csv (nicht einheitlich) in 2 Listen

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

und so weiter. Wie spalte ich es und weise jedem Python-Listen zu. Die Länge jeder Zeile in CSV ist beliebig. Ich brauche sie in

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

und den Rest in eine Python-Liste zu spalten

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

Was ein effizienter Weg, dies zu tun bekommen. Der folgende Code ist gut genug, um CSV in eine Liste von Listen zu konvertieren, aber mit den letzten Elementen. Ich mag die letzten Elemente in einer separaten Liste

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

Antwort

4

Sie können die Elemente in alle Elemente durch den Leser Objekt und Split/entpacken iterieren ausschließlich den letzten und letzten Punkt.

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

oder 'für * andere, zuletzt in reader' direkt. –

+1

@ Jean-FrançoisFabre Ja, das würde die extra Reise vermeiden, aber dann wird die Python 2-Alternative keine Bleibe haben :) –

0

Try this:

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