3 回答

TA貢獻(xiàn)2011條經(jīng)驗 獲得超2個贊
您可以使用:
re.findall(r'((?:[A-Z]\w{2,}\s*){2,4})', line)
它可能會添加一個尾隨空格,可以用 .strip()

TA貢獻(xiàn)1786條經(jīng)驗 獲得超11個贊
非正則表達(dá)式解決方案:
from string import punctuation as punc
def solve(strs):
words = [[]]
for i,x in enumerate(strs.split()):
x = x.strip(punc)
if x[0].isupper() and len(x)>2:
if words[-1] and words[-1][-1][0] == i-1:
words[-1].append((i,x))
else:
words.append([(i,x)])
names = [" ".join(y[1] for y in x) for x in words if 2 <= len(x) <= 4]
return ", ".join(names) if names else None
data = [
'Her name is Emily.',
'I work for Surya Soft.',
'I sent an email for Ery Wulandari.',
'Welcome to the Link Building Partner abc Fooo Foo program!'
]
for x in data:
print solve(x)
輸出:
None
Surya Soft
Ery Wulandari
Link Building Partner, Fooo Foo
添加回答
舉報