擅长:python、mysql、java
<p>我建议您创建一个列表,列出所有可能的标题,这些标题可以先按名称排序:</p>
<pre><code>>>> titles = "Mr\. Mrs\. Lady Sir".split()
['Mr\\.', 'Mrs\\.', 'Lady', 'Sir']
</code></pre>
<p>然后,您可以使用它们为这些标题创建regex,后跟一个空格。在</p>
^{pr2}$
<p>然后用这些标题加上一个单词来找出所有的名字和单词。在</p>
<pre><code>>>> re.findall(title_opt + "[A-Z][a-z]+", text)
['Text', 'Mr. Xxxxx', 'Mrs. Yyyyy', 'Mrs. Zzzzz', 'Text', 'Word', 'Lady Zzzzz', 'Mr. Xxxxx']
</code></pre>
<hr/>
<p>或者,根据您自己的方法,一旦您有了名称、单词和标题的列表,就可以使用迭代器将标题与迭代器中的<code>next</code>单词连接起来。在</p>
<pre><code>>>> names = ['Text', 'Mr.', 'Xxxxx', 'Mrs.', 'Yyyyy', 'Mrs.', 'Zzzzz', 'Text', 'Word', 'Lady', 'Zzzzz', 'Mr.', 'Xxxxx']
>>> titles = set("Mr. Mrs. Lady Sir".split())
>>> iterator = iter(names)
>>> [s if s not in titles else s + " " + next(iterator) for s in iterator]
['Text', 'Mr. Xxxxx', 'Mrs. Yyyyy', 'Mrs. Zzzzz', 'Text', 'Word', 'Lady Zzzzz', 'Mr. Xxxxx']
</code></pre>