count()中的通配符

2024-04-28 11:24:48 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法在count()中使用通配符

假设我有一个列表:

lst = ["abXY", "cdXY", "efXY", "ghVW", "ijVW"]

在这里,我想计算以“XY”结尾的项目的出现次数

有没有类似于count()的内置方法

这行不通:

lst.count("%XY")

为什么?


Tags: 项目列表count结尾次数内置xylst
1条回答
网友
1楼 · 发布于 2024-04-28 11:24:48

在这种情况下,您可以使用str.endswith

>>> lst = ["abXY", "cdXY", "efXY", "ghVW", "ijVW"]
>>> sum(1 for x in lst if x.endswith("XY"))
3

对于更一般的“通配符”匹配,请使用正则表达式

>>> import re
>>> p = re.compile(".*XY$")
>>> sum(1 for x in lst if p.match(x))
3

通过定义一个在其__eq__方法中使用正则表达式匹配的特殊类,也可以使用lst.count,但我真的不明白为什么要这样做

class M:
    def __init__(self, p):
        self.p = "^" + p.replace("%", ".*") + "$"
    def __eq__(self, x):
        return re.match(p, x)

>>> lst.count(M("%XY"))
3

相关问题 更多 >