擅长:python、mysql、java
<p>如果</strong><code>x</code>是静态的,并且总是在每行末尾匹配一个子字符串(如<code>"DDD-1126N|refseq:NP_285726|uniprotkb:P00112"</code>),那么<code>re</code>模块在这里是完全不必要的:</p>
<pre><code>x = 'uniprotkb:'
f = open('m.txt')
for line in f:
if x in line:
print line[line.find(x)+len(x):]
</code></pre>
<hr/>
<p><strong>编辑:</strong>
回答你的评论。如果它们由管道字符(<code>|</code>)分隔,则可以执行以下操作:</p>
<pre><code>sep = "|"
x = 'uniprotkb:'
f = open('m.txt')
for line in f:
if x in line:
matches = [l[l.find(x)+len(x):] for l in line.split(sep) if l[l.find(x)+len(x):]]
print matches
</code></pre>
<p>如果m.txt具有以下行:</p>
<pre><code>DDD-1126N|uniprotkb:285726|uniprotkb:P00112
</code></pre>
<p>然后,上述将输出:</p>
<pre><code>['285726', 'P00112']
</code></pre>
<p>将<code>sep = "|"</code>替换为任何列分隔符</p>