2012-03-19 170 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

在linux中查看diff命令。 – hovanessyan 2012-03-19 15:11:13

回答

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解决方案无效地创建列表,然后从列表创建集合,而不是创建集合以开始。 – 2012-03-19 16:51:45