import fnmatch fnmatch.filter(names, pat)
names
- итерируемый объект со строками (не обязательно имена файлов), которые нужно отфильтровать;pat
- строка шаблона.pat
.Функция filter()
модуля fnmatch
вернет подмножество строк names
, которые соответствуют шаблону pat
.
Поведение функции fnmatch.filter()
такое же, что и [n for n in names if fnmatch(n, pattern)]
, но реализовано более эффективно.
В этом примере fnmatch.filter()
возвращает список имен файлов в директории, которые соответствуют шаблону 'fnmatch_*.py'
.
import os, pprint import fnmatch pattern = 'fnmatch_*.py' files = list(sorted(os.listdir('.'))) simile_list = fnmatch.filter(files, pattern) pprint.pprint(simile_list) # ['fnmatch_filter.py', # 'fnmatch_fnmatch.py', # 'fnmatch_fnmatchcase.py', # 'fnmatch_translate.py']
Используйте Python эффективно и не придумывайте велосипеды...
>>> import fnmatch >>> lst = ['радиолуч', 'кардиолог', 'радиолог', 'биолог'] >>> pattern = 'ради*' >>> fnmatch.filter(lst, pattern) # ['радиолуч', 'радиолог'] >>> pattern = '*олог' >>> fnmatch.filter(lst, pattern) # ['кардиолог', 'радиолог', 'биолог'] >>> pattern = '*дио*' >>> fnmatch.filter(lst, pattern) # ['радиолуч', 'кардиолог', 'радиолог'] >>> pattern = '*дио*г' >>> fnmatch.filter(lst, pattern) # ['кардиолог', 'радиолог']