2011-12-19 49 views
0

近年來,隨着計算器的幫助,我才知道如何使用python現在即時通訊面臨一些小問題,同樣的代碼相匹配的文本文件......它執行以下任務問題Python代碼匹配的文件

輸入到程序是兩個文本文件 文件1

C1orf159 

FAM79A 

IGFBP2 

RNF25 
. 

. 

. 

. 

文件2

ACVR2B 

CACNA1A 

RNF25 

IGF2 

. 

. 

. 

我寫了一個python腳本來提取這兩個文件之間的常用詞如下

file1=open("f1.txt","r") 
file2=open("f2.txt","r") 
file3=open("overlap.txt","w") 

list1=file1.readlines() 
list2=file2.readlines() 

for line1 in list1: 
    for line2 in list2: 
     if line1.strip() in line2.strip(): 
      print line2 
     file3.write(line2) 

這給瞭如下結果

RNF25 

IGF2 

. 

. 

. 

但file1中存在這種輸出第二個字IGF2一個問題是不是有...腳本是從文件1與IFG2..meaning它匹配IGFBP2正在尋找模式...我不想這樣,我想兩個文件之間的精確匹配..

任何人可以幫助修改我的腳本得到兩個文件之間的精確匹配...

謝謝 Ni

+0

你應該已經改正了''file3.write(line2)''的縮進。但最重要的是,我沒有看到**'IGF2'**在**'IGFBP2'** – eyquem 2011-12-19 20:40:39

回答

2

你想要line1.strip() == line2.strip()。在這種情況下,in將匹配子字符串。完全匹配後,你聽起來像。

5

你在找兩個文件的交集嗎?那是

s1 = set(open("f1.txt", "r")) 
s2 = set(open("f2.txt", "r")) 

for ln in s1 & s2: 
    file3.write(ln) 
+0

+1之中,因此暗示了可以以最有效的方式完成OP想要的操作 – troutinator 2011-12-19 17:07:49