2012-04-04 4 views
3

Мне сложно справляться с тем, что кажется мне простой проблемой. Я пытаюсь импортировать csv и разбивать его столбцы на массивы, чтобы я мог выполнять разные операции, а затем zip() обратно вместе.CSV Столбцы для массивов в Python

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 сообщает 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] 
Смежные вопросы