有没有办法检查列表中的某个模式?

irf*_*ari 0 python design-patterns list

有没有办法检查某个模式,以便何时使用该函数可以打印列表中满足模式的元素...例如

我有一份清单

abc=['adams, brian','smith, will',' and j.smith. there is a long string here','some more strings','some numbers','etc etc']
Run Code Online (Sandbox Code Playgroud)

现在我想要的是,我得到所有具有格式'xyz,abc''x.abc'列表之外的字符串.

如果你们能告诉我一个如何在列表中查找某个模式的通用方法,那将是一个很大的帮助.

Rom*_*huk 5

我会使用正则表达式:

>>> import re
>>> exp = re.compile('(\w+\.\w+)|(\w+,\s?\w+)')
>>> map(exp.findall, abc)
[[('', 'adams, brian')], [('', 'smith, will')], [('j.smith', '')], [], [], []]
Run Code Online (Sandbox Code Playgroud)

扁平化这一结果的功能方式:

>>> r = map(exp.findall, abc)
>>> filter(None, sum(sum(r, []), ()))
('adams, brian', 'smith, will', 'j.smith')
Run Code Online (Sandbox Code Playgroud)