我正在尝试使用正则表达式和列表推导来清除包含"msi"
的字符串。但是,当我打印列表时,包含"msi"
的字符串仍在列表中。错误究竟是什么?这是我的代码:
spam_list = [l for l in spam_list if not re.match("msi", l)]
答案 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]