有没有办法检查某种模式,以便何时使用该功能可以打印满足模式的列表中的元素......例如。
我有一个清单
abc=['adams, brian','smith, will',' and j.smith. there is a long string here','some more strings','some numbers','etc etc']
现在我想要的是我从列表中获取格式为'xyz,abc'
和'x.abc'
的所有字符串。
答案 0 :(得分:5)
我会使用正则表达式:
>>> import re
>>> exp = re.compile('(\w+\.\w+)|(\w+,\s?\w+)')
>>> map(exp.findall, abc)
[[('', 'adams, brian')], [('', 'smith, will')], [('j.smith', '')], [], [], []]
扁平化此结果的功能方法:
>>> r = map(exp.findall, abc)
>>> filter(None, sum(sum(r, []), ()))
('adams, brian', 'smith, will', 'j.smith')
答案 1 :(得分:1)
import re
pattern = re.compile('^([A-z]*)[,\.](\s*)([A-z]*)$')
filtered = [ l for l in abc if re.match(pattern,l) ]