<p>作为第一次匹配的更有效方法,您可以使用<code>str.split()</code>(如果您的字符串已被<code>,</code>分割):</p>
<pre><code>>>> s=u' Ron Iervolino, Trish Iervolino, Russ Middleton, and Lisa Middleton '
>>> [i.split('and')[1] if i.strip().startswith('and') else i for i in s.split(',')]
[u' Ron Iervolino', u' Trish Iervolino', u' Russ Middleton', u' Lisa Middleton ']
</code></pre>
<p>对于在<code>u' Kelly and Tom Murro '</code>中查找名称,可以使用以下命令:</p>
<pre><code>l=[]
s=u' Ron Iervolino, Trish Iervolino, Russ Middleton, and Lisa Middleton ,Kelly and Tom Murro'
import re
for i in s.split(','):
i=i.strip()
if i.startswith('and') :
l.append(i.split('and')[1])
elif not i.endswith('and') and 'and' in i :
names=[i for i in re.split(r'and| ',i) if i]
for t in zip(names[:-1],[names[-1] for i in range(len(names)-1)]):
l.append(' '.join(t))
else:
l.append(i)
print l
[u'Ron Iervolino', u'Trish Iervolino', u'Russ Middleton', u' Lisa Middleton', u'Kelly Murro', u'Tom Murro']
</code></pre>
<p>当您遇到像<code>u' Kelly and Tom Murro '</code>这样的字符串时,首先将它拆分为一个名称列表,其中<code>[i for i in re.split(r'and| ',i) if i]</code>基于<code>'and'</code>、<code>space</code>拆分字符串,这样您就有了<code>[u'Kelly', u'Tom', u'Murro']</code>。然后,您需要以下名称:</p>
<pre><code>u'Kelly Murro'
u'Tom Murro'
</code></pre>
<p>您可以创建一个zip文件,其中包含repeat the last element和名为from begin of the list to last<code>names[:-1]</code>的元素,因此您将拥有以下内容。<strong>请注意,此方法适用于最长的名称,如(<code>Kelly and Tom and rose and sarah Murro</code>):</strong></p>
<pre><code>[(u'Kelly', u'Murro'), (u'Tom', u'Murro')]
</code></pre>