2017-07-17 16 views
1

に私は形式上スプリットCSV(不均一)2つのリスト

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

などのデータとCSVを持っています。どのように分割し、それぞれをPythonリストに割り当てるのですか? csvの各行の長さは任意です。私は、Pythonのリストこれを成し遂げるための効率的な方法は何ですか

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

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

、残りにそれらを分割する必要があります。以下のコードは、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