Mam listę nazw plików bibliotek, które należy filtrować względem wyrażenia regularnego, a następnie wypakowuję numer wersji od zgodnych. Jest oczywistym sposobem, aby to zrobić:Filtrowanie i transformacja list w języku Python
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))
która produkuje następującą listę:
['3.3.1', '3.2.0']
Jednak czuję, że pętla nie jest bardzo "w stylu Pythona i czuć powinno być możliwe do zastąpienia" dla 'pętli powyżej z jakąś inteligentną jedną linijką. Sugestie?
Dzięki za "findall" i "sumę"! Jeśli chodzi o czytelność - przyzwyczaiłem się już do niego z wszystkimi algorytmami stl i boost :) –
z jakiegoś powodu ten ma dla mnie dużo więcej sensu niż akceptowana/przegłosowana odpowiedź. –