2013-02-03 38 views
-3

比較我有5個文件如下多個文件使用python

F1:

ABL1 
ABR 
AHSG 
AIRE 
CCKBR 
LRBA 
CDC27 
CENPA 

F2:

AKT1 
APC 
APP 
AR 
CCND1 
C11ORF2 
CCNE1 
CST6 
CTNNB1 
DBI 
DEFA1 
DNMT1 
EEF1A1 
EEF1G 

F3:

ACTG1 
AMPH 
ANK3 
APBA2 
APOA1 
ARHGDIA 
ATP5J 
DST 
CA1 
CA12 
DDR1 
CALR 
CASP6 

F4:

ACVR1 
ARL4D 
RHOA 
RHOG 
RHOH 
BMPR1B 
BMPR2 
CDC20 
CDK4 
CDK6 
CHN1 

F5:

A1BG 
A2M 
AAMP 
ACTB 
ADD1 
ALAS1 
ALB 
APLP1 
ASNA1 
ATP5B 

我嘗試下面的代碼

file1=open("F1.txt","r") 
file2=open("F2.txt","r") 
file3=open("F3.txt","r") 
file4=open("F4.txt","r") 
file5=open("F5.txt","r") 

list1=file1.readlines() 
list2=file2.readlines() 
list3=file3.readlines() 
list4=file4.readlines() 
list5=file5.readlines() 

for line1 in list1: 
    for line2 in list2: 
     for line3 in list3: 
      for line3 in list4: 
       for line4 in list5: 
        if line1.strip() in line2.strip() in line3.strip() in line4.strip() in line5.strip(): 
         print line1 
         file3.write(line1) 

現在我想比較這一切文件,並使用Python腳本 任何人可以幫助找出常用詞?我可以使用套裝嗎?

+1

首先[格式化後(http://stackoverflow.com/editing-help)正確然後告訴我們你有什麼嘗試? –

+0

你爲什麼不自己嘗試一下?到目前爲止,你做了什麼?失敗了? –

+2

'我可以使用套裝嗎?'是的,你可以。聽起來是一個好主意。現在請自己嘗試。 –

回答

2

它更容易(我沒有做任何錯誤打開文件時檢查,雖然):

filenames = ["F1.txt", "F2.txt", "F3.txt", "F4.txt", "F5.txt"] 
files = [open(name) for name in filenames] 
sets = [set(line.strip() for line in file) 
      for file in files] 
common = set.intersection(*sets) 
for file in files: file.close() 
+2

這裏有一個微妙的危險,它已經咬了我幾次。由於包含行結尾/空格,如果有任何區別,您將錯過一場比賽。尤其是Python成語''\ n'.join(seq)',它不會添加尾隨CR,所以通常可能會有非常罕見的 - 因此容易被忽視 - 的錯誤。我會防守,並且要麼是'.strip()'或'.split()'。 – DSM

+0

有什麼辦法可以告訴我至少在3個文件中需要一些東西? – gthm

+0

@gthmgeeky:當然,你可以使用['collections.Counter'](http://docs.python.org/2/library/collections.html#collections.Counter)。 –

相關問題