我有一些字符串

str = 'kkyykykyyk'

我想计算“kyy”和“ky”在这个字符串中出现的次数。
但是,如果像本例中那样重叠,那么我只需要计算更长的子字符串。

Mu 当前的解决方案如下所示
k = str.count('kyy')
y = (str.count('ky') - str.count('kyy'))
print(k, y)        # solution: 'kyy' two times AND 'ky' one time

有没有更短的或“更多的python”方法来解决这个问题?

最佳答案

一种方法是使用正则表达式并使用 ? 运算符来检查字符串中是否出现额外的 y。

也就是说,我们找到 ky 的出现,并检查下一个值是否是 y 如果出现我们就取它否则我们不

>>> import re
>>> st = 'kkyykykyyk'
>>> re.findall(r'kyy?',st)
['kyy', 'ky', 'kyy']
>>> re.findall(r'kyy?',st).count('kyy')
2
>>> re.findall(r'kyy?',st).count('ky')
1

关于python - 计算子串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48635104/

10-11 20:30