2024-04-28 11:24:48 发布
网友
有没有办法在count()中使用通配符
count()
假设我有一个列表:
lst = ["abXY", "cdXY", "efXY", "ghVW", "ijVW"]
在这里,我想计算以“XY”结尾的项目的出现次数
有没有类似于count()的内置方法
这行不通:
lst.count("%XY")
为什么?
在这种情况下,您可以使用str.endswith:
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,但我真的不明白为什么要这样做
__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
在这种情况下,您可以使用
str.endswith
:对于更一般的“通配符”匹配,请使用正则表达式
通过定义一个在其
__eq__
方法中使用正则表达式匹配的特殊类,也可以使用lst.count
,但我真的不明白为什么要这样做相关问题 更多 >
编程相关推荐