Сравнение двух списков строк .CSV - PullRequest
0 голосов
/ 19 марта 2012

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

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 »нет атрибута« пересечение »».

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

Ответы [ 2 ]

2 голосов
/ 19 марта 2012

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 голосов
/ 19 марта 2012

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

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

...