2012-04-04 30 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]