Ошибка логики понимания списка Python - PullRequest
4 голосов
/ 05 июля 2011

Я пытаюсь отсеять строки, содержащие "msi", используя регулярные выражения и понимание списка. Однако, когда я печатаю список, строки, которые содержат "msi", все еще находятся в списке. Что именно будет ошибка? Это мой код:

spam_list = [l for l in spam_list if not re.match("msi", l)]

Ответы [ 3 ]

10 голосов
/ 05 июля 2011

re.match() соответствует началу строки.Используйте re.search(), или даже лучше, in.

L = [l for l in L if "msi" not in l]
5 голосов
/ 05 июля 2011

Так как вы, очевидно, просматриваете список имен файлов, вы также можете использовать конец с:

list = [l for l in list if l.endswith('.msi')]
4 голосов
/ 05 июля 2011

Вот один из способов отфильтровать список по расширению файла

import os
extensions = set(['.msi', '.jpg', '.exe'])
L = [l for l in L if os.path.splitext(l)[1] not in extensions]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...