Ici sont RE-basés et les versions basés sur des chaînes:
import re
def bystr(text):
words = text.split()
index = words.index('version') + 1
return words[index]
def byre(text, there=re.compile(r'version\s+(\S+)')):
return there.search(text).group(1)
m = 'Some Text That exists version 1.0.41.476 Fri Jun 4 16:50:56 EDT 2010'
if __name__ == '__main__':
print bystr(m)
print byre(m)
(exécuté comme script principal pour confirmer leur retour le même résultat - une chaîne, pas un tuple comme une réponse particulièrement existante spectacles), et voici le moment de chaque (sur mon ordinateur portable lent):
$ python -mtimeit -s'import are' 'are.bystr(are.m)'
100000 loops, best of 3: 4.29 usec per loop
$ python -mtimeit -s'import are' 'are.byre(are.m)'
100000 loops, best of 3: 3.25 usec per loop
Bien que RE ont souvent une mauvaise réputation dans la communauté Python, même cet exemple simple montre que, le cas échéant, ils peuvent souvent être fa plus qu'une simple manipulation de chaîne - dans ce cas, la version RE ne prend que 3/4 du temps que prend la version de chaîne.