2012-03-19 6 views
0

Я пытаюсь написать сценарий для сравнения двух списков строк из разных электронных таблиц и для печати списка строк, общих для обеих таблиц. Я в общей сложности новичок, но до сих пор я получил:Сравнение двух списков строк .CSV

import csv 
f1 = file("KaySinTan09.csv", "r") 
f2 = file("Khanna11.csv", "r") 

c1=csv.reader(open('KaySinTan09.csv', 'rb'), delimiter=' ', quotechar='|') 
c2=csv.reader(open('Khanna11.csv', 'rb'), delimiter=' ', quotechar='|') 

output = c1.intersection(c2) 
print output 

Я получаю сообщение об ошибке сказав «AttributeError:„_csv.reader“объект не имеет атрибута 'пересечения».

Любые советы о том, куда я иду, не так?

+0

проверить команду diff в linux. – hovanessyan

ответ

2

csv.reader это не набор, вам нужно преобразовать его в один, чтобы сделать это:

c1= set(csv.reader(open('KaySinTan09.csv', 'rb'), delimiter=' ', quotechar='|')) 
c2 = set(csv.reader(open('Khanna11.csv', 'rb'), delimiter=' ', quotechar='|')) 

output = c1.intersection(c2) 
print output 
0

csv.reader не возвращает список - он возвращает CSV читателя объект - поэтому метод .intersection не будет работать. Возможно, это будет:

c1=csv.reader(open('KaySinTan09.csv', 'rb'), delimiter=' ', quotechar='|') 
c2=csv.reader(open('Khanna11.csv', 'rb'), delimiter=' ', quotechar='|') 

c1_list = [] 
c2_list = [] 

for c in c1: 
    c1_list.append(c) 
for c in c2: 
    c2_list.append(c) 

output = set(c1_list).intersection(set(c2_list)) 
print output 

Это не проверено.

+0

-0. Wordy решение создает список неэффективно, а затем создает набор из списка, а не создает набор для начала. –

Смежные вопросы