4

我很难处理在我看来是一个简单的问题。我正在尝试导入 csv 并将其列拆分为可以运行不同操作的数组,然后将 zip() 重新组合在一起。

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

4 回答 4

6

您需要更改column1.extend(row[0])column1.append(row[0])(很明显,对于第 2 列也是如此)。Extend 用于将一个列表的内容添加到另一个列表中,append 用于添加单个元素。Extend 告诉 python 将字符串视为其字符列表并附加每个字符。

>>> lst = []
>>> lst.extend("foo")
>>> lst
['f', 'o', 'o']
>>> lst.append("foo")
>>> lst
['f', 'o', 'o', 'foo']
于 2012-04-04T22:57:25.063 回答
1

column1 和 column2 是列表。您要使用的方法是append()而不是extend()

查看官方文档: http ://docs.python.org/tutorial/datastructures.html

于 2012-04-04T22:59:02.353 回答
1

每个row索引都是一个字符串,所以如果你想将它添加到你的列中,你可以这样做:

column1.append(row[0])

或这个:

column1.extend([row[0]])
于 2012-04-04T22:59:33.270 回答
1

另外一个选项:

column1 = [row[0] for row in data]
于 2016-03-09T14:05:10.133 回答