擅长:python、mysql、java
<p>由于您的第一个文本文件包含输出的所有“字段”,我们可以稍微减少逻辑和步骤数。你知道吗</p>
<p>首先,我们打开两个输入文件并将它们读入列表:</p>
<pre><code>with open('file1.txt', 'r') as a, open('file2.txt','r') as b:
fileA = [l.rstrip('\n').split('\t')[1:5] for l in a.readlines()]
fileB = [l.rstrip('\n').split('\t')[1:] for l in b.readlines()]
</code></pre>
<p>现在我们有两个列表,<code>fileA</code>和<code>fileB</code>。你会注意到他们两个的切片符号。因为<code>fileA</code>包含了您想要的所有输出值,所以它现在已经准备好了,只需要根据第二个列表进行过滤。我还从两个列表中删除了第一项,因此我们可以使用<code>EMT...</code>值进行比较。你知道吗</p>
<p>现在我们可以检查<code>fileB</code>是否包含(不是全部)<code>fileA</code>,并将匹配项写入结果文件:</p>
<pre><code>with open('results.txt','w') as o:
for line in fileA:
if any(line[0] in l for l in fileB):
o.write('%s\n' % '\t'.join(line))
</code></pre>
<p><code>results.txt</code>再次用相应的匹配项进行制表符分隔:</p>
<pre><code>EMT15298 GO:0003674 molecular_function PF08268
EMT20601 GO:0005515 protein binding PF08268
</code></pre>