擅长:python、mysql、java
<p>下面是一个正则表达式解决方案,它工作并保留<code>[ ]</code>。
正则表达式:<code>r'(\[.+\])'</code>。你知道吗</p>
<p>前导的<code>r</code>表示<em>原始字符串</em>,它阻止python插入<code>\\</code>字符。你知道吗</p>
<p>外圆括号<code>( )</code>是一个捕获组,它将捕获到<code>m.groups()</code>返回的元组中。你知道吗</p>
<p><code>[</code>必须“转义”,因为它们是正则表达式元字符。你知道吗</p>
<p><code>.+</code>表示任何字符(<code>.</code>)的一个或多个</em>(<code>+</code>)</p>
<p>编辑:此版本使用<code>OrderedDict</code>删除重复项并保留顺序(而<code>set</code>不会这样做):</p>
<pre><code>import re
from collections import OrderedDict
uniq = OrderedDict()
with open('gash.txt') as inf:
for line in inf:
m = re.search(r'(\[.+\])', line)
if m:
uniq[m.groups()[0]] = None
with open('out5.txt', 'w') as outf:
print("\n".join(uniq.keys()), file=outf)
</code></pre>
<p>在out5.txt中给出:</p>
<pre><code>[Aspergillus aculeatinus CBS 121060]
[gamma proteobacterium symbiont of Ctena orbiculata]
[Aspergillus vadensis CBS 113365]
[Aspergillus neoniger CBS 115656]
[Aspergillus sclerotioniger CBS 115572]
[Aspergillus eucalypticola CBS 122712]
</code></pre>