Python列表理解逻辑错误

nob*_*ody 4 python regex logic

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

spam_list = [l for l in spam_list if not re.match("msi", l)]
Run Code Online (Sandbox Code Playgroud)

Ign*_*ams 10

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

L = [l for l in L if "msi" not in l]
Run Code Online (Sandbox Code Playgroud)

  • @nobody:没有人告诉你不要使用正则表达式,如果它是合适的工具. (2认同)

Man*_*y D 5

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

list = [l for l in list if l.endswith('.msi')]
Run Code Online (Sandbox Code Playgroud)