<p>不应该使用<code>list()</code>,但应该在循环之前创建空列表,并将结果附加到此列表</p>
<pre><code>import re
x = ['Accara building model (ABM)','tri-com model (tcm)']
results = []
for i in x:
ko = re.sub("[\(\[].*?[\)\]]", "", i)
resutls.append(ko.strip())
print(results)
</code></pre>
<p>结果</p>
<pre><code>['Accara building model', 'tri-com model']
</code></pre>
<p>你甚至可以使用列表理解</p>
<pre><code>import re
x = ['Accara building model (ABM)','tri-com model (tcm)']
results = [re.sub("[\(\[].*?[\)\]]", "", i).strip() for i in x]
print(results)
</code></pre>
<hr/>
<p><strong>顺便说一句:</strong>我使用<code>strip()</code>删除结尾处的空格。但是可以用regex删除这个空格,regex以空格<code>" [\(\[].*?[\)\]]"</code>开头。你知道吗</p>
<hr/>
<p><strong>编辑:</strong>正如Mark Meyer在comment中建议的那样,您还可以编译regex,这样就不必在每个循环中都编译它了。你知道吗</p>
<pre><code>x = ['Accara building model (ABM)','tri-com model (tcm)']
pattern = re.compile(" [\(\[].*?[\)\]]")
results = [re.sub(pattern, "", i) for i in x]
print(results)
</code></pre>
<hr/>
<p><strong>顺便说一句:</strong>如果您确定elments总是具有相同的结构,那么您可以不使用regex而使用<code>split(' (')</code>删除它</p>
<pre><code>x = ['Accara building model (ABM)','tri-com model (tcm)', 'name without parentheses']
results = [i.split(' (',1)[0] for i in x]
print(results)
</code></pre>