2013-07-29 35 views
0

假設我有2個CSV文件:比較在蟒蛇不同的CSV文件

文件1:

Epitope Name,Epitope,Protein,position,position 

3606,NSRSTSLSV,FOO,10,21 

文件2:

A,B,C,D,E,F,G,H,I,J,K 

0,1,2,3,4,5,6,7,8,9,NSRSTSLSV 

從本質上講,我想看看內容文件1中的行1在文件2的第10行中找到。如果內容匹配,我將打印第3個csv,該文件是文件1的新版本,並且列中有找到或未找到。

現在,我沒有找到一切,我知道不是這樣。在某些情況下,從第一個文件中的文本可能文本的較大塊裏面發現從文件2.

這裏是我到目前爲止(改編自更早找到了答案):

#usr/bin/python2.4 

import csv 

f1 = file ('all_epitopes.csv', 'rb') 
f2 = file ('positiveBcell.csv', 'rb') 
f3 = file ('results.csv', 'w') 

c1 = csv.reader((f1), delimiter=",", quotechar='"') 
c2 = csv.reader((f2), delimiter=",", quotechar='"') 
c3 = csv.writer((f3), delimiter=",", quotechar='"') 


positiveBcell = [row for row in c2] 

for all_epitopes_row in c1: 
    row = 1 
    found = False 
    for master_row in positiveBcell: 
     results_row = all_epitopes_row 
     if all_epitopes_row[2] == positiveBcell[10]: 
      results_row.append('FOUND in Bcell List (row ' + str(row) + ')') 
      found = True 
      break 
     row = row +1 
    if not found: 
     results_row.append('NOT FOUND in Bcell list') 
    c3.writerow(results_row) 

f1.close() 
f2.close() 
f3.close() 
+0

只是好奇,有沒有你做// positiveBcell = C2中一行行]的理由//你這麼做的時候//爲C1 all_epitopes_row://爲C1?此外,如果我有權訪問您的csv文件,它將有助於更輕鬆地調試代碼(至少對我來說)。 – sihrc

回答

0

假設你兩個文件

文件1:

Epitope Name,Epitope,Protein,position,position 

#Row 1# 
3606,NSRSTSLSV,FOO,10,21 

文件2:

A,B,C,D,E,F,G,H,I,J,K 

#Row 10# 
0,1,2,3,4,5,6,7,8,9,NSRSTSLSV 

OP的評論後:

for all_epitopes_row in c1: 
    row = 1 
    found = False 
    for master_row in positiveBcell: 
     results_row = all_epitopes_row 
     **if all_epitopes_row[2] == master_row[10]:** 
      results_row.append('FOUND in Bcell List (row ' + str(row) + ')') 
      found = True 
      break 
     row = row +1 
    if not found: 
     results_row.append('NOT FOUND in Bcell list') 
    c3.writerow(results_row) 
+0

哦。我現在看到了這個問題。當我真的打算指定列時,我寫了這個來看行。 因此,我應該指定的是我要查找的是第10列匹配第2列而不是第10行和第2行。我會看看我是否可以想出修復方案 – Gdodge77

+0

爲了更加清晰,我想搜索條目在C2(csv 1)中,並嘗試在csv2的C10中的任何位置找到它們。 – Gdodge77

+0

@ Gdodge77那麼你的問題是你有積極的Bcell [10]應該是master_row [10] – sihrc