J'ai une liste de noms de fichiers de bibliothèque dont j'ai besoin pour filtrer par rapport à l'expression régulière, puis extraire le numéro de version de ceux qui correspondent. Ceci est la façon évidente de le faire:Filtrage de liste Python et 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))
qui produit la liste suivante:
['3.3.1', '3.2.0']
Pourtant, je sens que la boucle est pas très « style Python » et estiment qu'il devrait être possible de remplacer " pour 'boucle ci-dessus avec un seul doublure intelligente. Suggestions?
Merci à la fois pour 'findall' et 'sum'! En ce qui concerne la lisibilité - déjà utilisé avec tous les algorithmes stl et boost :) –
pour une raison qui me fait beaucoup plus de sens que la réponse acceptée/upvoted. –