Python列表理解逻辑错误

时间:2011-07-05 02:47:26

标签: python regex logic

我正在尝试使用正则表达式和列表推导来清除包含"msi"的字符串。但是,当我打印列表时,包含"msi"的字符串仍在列表中。错误究竟是什么?这是我的代码:

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

3 个答案:

答案 0 :(得分:10)

re.match()匹配字符串的开头。使用re.search(),甚至更好,in

L = [l for l in L if "msi" not in l]

答案 1 :(得分:5)

由于您显然正在查看文件名列表,因此您还可以使用endswith:

list = [l for l in list if l.endswith('.msi')]

答案 2 :(得分:4)

以下是通过文件扩展名

过滤列表的一种方法
import os
extensions = set(['.msi', '.jpg', '.exe'])
L = [l for l in L if os.path.splitext(l)[1] not in extensions]