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