【发布时间】:2011-01-27 01:18:24
【问题描述】:
我有一个函数可以从字符串列表中挑选出块并将它们作为另一个列表返回:
def filterPick(lines,regex):
result = []
for l in lines:
match = re.search(regex,l)
if match:
result += [match.group(1)]
return result
有没有办法将其重新表述为列表理解?显然它是相当清楚的;只是好奇。
感谢那些做出贡献的人,特别提到@Alex。这是我最终得到的浓缩版;正则表达式匹配方法作为“预提升”参数传递给 filterPick:
import re
def filterPick(list,filter):
return [ ( l, m.group(1) ) for l in list for m in (filter(l),) if m]
theList = ["foo", "bar", "baz", "qurx", "bother"]
searchRegex = re.compile('(a|r$)').search
x = filterPick(theList,searchRegex)
>> [('bar', 'a'), ('baz', 'a'), ('bother', 'r')]
【问题讨论】:
标签: python regex list-comprehension