2012-04-04 62 views
3

我很難處理我認爲是一個簡單的問題。我試圖導入一個csv並將它的列拆分成數組,我可以在其上運行不同的操作,然後將zip()返回到一起。在Python中排列的CSV列

import csv 

data = csv.reader(open('test.csv', 'rb'), delimiter=",", quotechar='|') 
column1, column2 = [], [] 

for row in data: 
    column1.extend(row[0]) 
    column2.extend(row[1]) 

print column1 
print column2 

該代碼打印兩個數組,其元素是單個字符而不是字符串。當我嘗試使用單個列進行此操作時,column1.extend(row)會執行我想要的操作。

我對解決這個問題的方法很感興趣,或者把它推廣到n列。

回答

4

您需要將column1.extend(row[0])更改爲column1.append(row[0])(對於第2列,清楚地說明也是如此)。 Extend用於將一個列表的內容添加到另一個列表中,append用於添加單個元素。擴展是告訴python將字符串視爲其字符列表並附加每個字符。

>>> lst = [] 
>>> lst.extend("foo") 
>>> lst 
['f', 'o', 'o'] 
>>> lst.append("foo") 
>>> lst 
['f', 'o', 'o', 'foo'] 
1

每個row指數是一個字符串,所以如果你想將其添加到您的列,你做這一點:

column1.append(row[0]) 

或本:

column1.extend([row[0]]) 
0

另一種選擇:

column1 = [row[0] for row in data]