Python列表理解逻辑错误

发布于 2024-11-18 11:30:09 字数 200 浏览 2 评论 0原文

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

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

I'm trying to weed out strings that contains "msi" using regular expressions and a list comprehension. However, when I print the list, strings that contain "msi" are still in the list. What exactly would the error be? This is my code:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

心如狂蝶 2024-11-25 11:30:09

re.match() 从字符串的开头匹配。使用re.search(),或者更好的是in

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

re.match() matches from the beginning of the string. Use re.search(), or even better, in.

L = [l for l in L if "msi" not in l]
依 靠 2024-11-25 11:30:09

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

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

Since you're apparently looking through a list of filenames, you could also use endswith:

list = [l for l in list if l.endswith('.msi')]
贱人配狗天长地久 2024-11-25 11:30:09

这是按文件扩展名过滤列表的一种方法

import os
extensions = set(['.msi', '.jpg', '.exe'])
L = [l for l in L if os.path.splitext(l)[1] not in extensions]

Here is one way to filter a list by the file extension

import os
extensions = set(['.msi', '.jpg', '.exe'])
L = [l for l in L if os.path.splitext(l)[1] not in extensions]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文