2012-03-19 43 views
0

私は、異なるスプレッドシートの2つの文字列リストを比較し、両方のスプレッドシートに共通する文字列のリストを印刷するスクリプトを作成しようとしています。私は合計初心者だけど、今のところ、私は持っている:2つの文字列の比較.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

答えて

2

csv.readerは、あなたがこれを行うために、1つに変換する必要があり、セットではありません。

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は、リストを返さない - そう.intersection方法 - それは、CSVリーダーオブジェクトを返します。動作しないでしょう。おそらくこれは:

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のソリューションは、リストを非効率的に作成し、次にセットを作成するのではなく、リストからセットを作成します。 –

関連する問題