首页 > 解决方案 > 如何仅从字符串文本中提取名称

问题描述

我有这些文字...

text1="% 4   Jérome Dekeyser + Corneille Wellens? "
text2="Matthew Sadler + Jon Speelman? 7  —"
text3="Martin Wostenholme + Frank Dancevic?  “ere"
text4="7 4   Albert Lammens + Paul de Borman?"
text5="x   Frans Gommers + Jeroen Simaeys?"
text6=" NSIe  Darryl Johansen +George Xie? "
text7="Joseph Cludts + Herman \Verbauwen? "

我只想提取名称......这样我就明白了。

Jérome Dekeyser + Corneille Wellens
Matthew Sadler + Jon Speelman
Martin Wostenholme + Frank Dancevic
Albert Lammens + Paul de Borman
Frans Gommers + Jeroen Simaeys
Darryl Johansen +George Xie
Joseph Cludts + Herman Verbauwen

输出中的+号可以忽略。这就是我可能想要的结果...

Matthew Sadler ,Jon Speelman

标签: python-3.x

解决方案


这个正则表达式可能会被改进,但它适用于所有示例,包括 Armin van Grünwald。

import re as regex

text1="% 4   Jérome Dekeyser + Corneille Wellens? "

extract_names = regex.findall(r'\b(?!\d)\w+\s\w+\s\w+\b|\b(?!\d)\w+\s\w+\b', text1)

print (extract_names)
# outputs 
['Jérome Dekeyser', 'Corneille Wellens']

print (', '.join(extract_names))
# outputs 
Jérome Dekeyser, Corneille Wellens

推荐阅读