Ich habe eine Liste von Bibliotheksdateinamen, die ich gegen regulären Ausdruck filtern muss und dann extrahiere Versionsnummer von denen, die übereinstimmen. Dies ist die offensichtliche Art und Weise, das zu tun:Python-Liste Filterung und Transformation
libs = ['libIce.so.33', 'libIce.so.3.3.1', 'libIce.so.32', 'libIce.so.3.2.0']
versions = []
regex = re.compile('libIce.so\.([0-9]+\.[0-9]+\.[0-9]+)')
for l in libs:
m = regex.match(l)
if m:
versions.append(m.group(1))
dass die folgende Liste erzeugt:
['3.3.1', '3.2.0']
Dennoch glaube ich, dass Schleife nicht sehr ‚Python-Stil‘ ist und das Gefühl, es möglich sein soll, ersetzen " für 'Schleife oben mit etwas intelligentem Einzeiler. Vorschläge?
Danke für 'findall' und 'sum'! In Bezug auf Lesbarkeit - bereits mit allen STL-und Boost-Algorithmen verwendet :) –
aus irgendeinem Grund macht mir das viel mehr Sinn als die angenommene/upvoted Antwort. –