Wie man re-match-Objekte in einem Listenverständnis verwendet

Habe ich eine Funktion zu wählen Klumpen aus einer Liste von strings und Rückgabe als eine andere Liste:

def filterPick(lines,regex):
    result = []
    for l in lines:
        match = re.search(regex,l)
        if match:
            result += [match.group(1)]
    return result

Gibt es eine Möglichkeit, zu formulieren, dies als eine list comprehension? Natürlich, es ist ziemlich klar wie es ist; einfach nur neugierig.


Danke an alle, die dazu beigetragen, eine Besondere Erwähnung für @Alex. Hier ist eine verkürzte version von dem, was landete ich mit; die regex-match-Methode übergeben wird, filterPick als "pre-hochgezogen" parameter:

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')]

InformationsquelleAutor der Frage Brent.Longborough | 2010-03-12

Schreibe einen Kommentar