Найти - Пользователи
Полная версия: Регулярное выражение, вернуть последнее совпадение.
Начало » Python для новичков » Регулярное выражение, вернуть последнее совпадение.
1 2 3
Nata
когда вы запускаете
timeit "import re; r = re.compile(r'.*/(.+)'); r.search('/home/test/soft/print.sh').group(1)"
он ведь каждый раз делает import re?
py.user.next
Nata
он ведь каждый раз делает import re?
Ну да, каждый раз.

[guest@localhost ~]$ python3 -mtimeit "import os"
1000000 loops, best of 3: 0.889 usec per loop
[guest@localhost ~]$ python3 -mtimeit "import re"
1000000 loops, best of 3: 0.881 usec per loop
[guest@localhost ~]$

При сравнении регулярных выражений и basename() это роли не играет, а при сравнении с .rsplit() той вообще импорт не требуется никакой.

Можно дальше рассмотреть:
А что будет, если в пути есть только имя файла? Какой из этих всех кодов отвалится? :)
bs0d
py.user.next
и опять победителем выходит rsplit
Nata
py.user.next
Какой из этих всех кодов отвалится?
мой регекс :D
я сразу сказала, что ваш лучше…
py.user.next
а при сравнении с .rsplit() той вообще импорт не требуется никакой.
вот поэтому сравнение rsplit VS basename/re.search в вашем случае необъективно

py.user.next
Nata
вот поэтому сравнение rsplit VS basename/re.search в вашем случае необъективно
Так они отдельно и стоят там, потому что у первых трёх есть импортирование. Импортирование - использование библиотеки, а вызов метода у строки - использование ядра.

bs0d
и опять победителем выходит rsplit
Не, ну, можно же найти, где он не подойдёт. Регулярки тут изначально, чтобы показать общий способ выделения какого-то фрагмента из строки. Изначально, если сравнивать обработку пути, то нужно сравнивать только basename() и .rsplit(), ну, может быть, ещё .partition() и .rpartition() рассмотреть. :)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB