Skip to main content
 首页 » 编程设计

python之如果文件 1 中的术语在文件 2 的行中,则将文件 2 中的整行写入文件 3

2025年05月04日15JustinYoung

我有两个文本文件,一个包含标识符列表,另一个包含更多标识符列表,以及我想要的其他一些信息。我想做的是比较文件 1 和 2 中的标识符,如果它们匹配,则将文件 2 中的行写入新文件文件 3。

这是我所拥有的(这有点奇怪,因为我进入了列表,但我在编程方面从来没有走那么远):

def identify(MOPED_Prot, Swiss_Prot, MOPED_to_Swiss): 
  Swiss = open(Swiss_Prot, 'r')  
  M = open(M_Prot, 'r') 
  output = open(M_to_Swiss, 'wt') 
  Swissids = [] 
  ids = [] 
  for line in M.readlines(): 
    ids.append(line[:5]) 
  for line in Swiss.readlines(): 
    Swissids.append(line) 
  while set(ids)& set(Swissids): 
      output.write(#line?  Not sure what goes here + "\n") 

我确实得到了代码,可以将“Swiss”中的一行写到新文件中,每个交叉点的代码都与此类似,但它只重复了一行。老实说,结局让我很困惑。

编辑:根据要求,文件如下所示

文件 1:

B4E035       
P23946       
O00376       
D6RGF3       
B2RDK6       
Q12999       
Q8TDD2       
B2RDC9       
C9JL66       
Q9NZQ9   

文件 2:

P31946  1433B_HUMAN YWHAB 
P62258  1433E_HUMAN YWHAE 
Q04917  1433F_HUMAN YWHAH YWHA1 
P61981  1433G_HUMAN YWHAG 
P31947  1433S_HUMAN SFN HME1 

文件 3 应该输出文件 2 中的行,如果第一列中的任何标识符匹配(它们的长度都是 6 个字符)

请您参考如下方法:

我在这里写了一些可以帮助你的东西......我把三个文件放在一个文件夹中

file_a.txt(每行1、2、3、4、5)

file_b.txt(每行4、5、6、7、8)

最终文件.txt

这是我的脚本:

# -*- coding: utf-8 -*- 
 
from collections import Counter 
 
file_a = open('file_a.txt', 'r') 
file_b = open('file_b.txt', 'r') 
final_file = open('final_file.txt', 'w') 
 
ids = [] 
 
for line in file_a.readlines(): 
  ids.append(line) 
 
print ids 
c = Counter(ids) 
 
for line in file_b.readlines(): 
  print line; 
  print 'count' + str(c[line]) 
  if c[line] > 0: 
    final_file.write(line); 
 
file_b.close(); 
final_file.close(); 
file_a.close();