Сообщить об ошибке.

Функция filter() модуля fnmatch в Python

Сравнить список имен файлов на соответствие шаблону

Синтаксис:

import fnmatch

fnmatch.filter(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)
# ['кардиолог', 'радиолог']