Python:计算字符串中的重叠子字符串

2024-06-17 10:19:10 发布

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

假设我有string = 'hannahannahskdjhannahannah',我想计算字符串hannah出现的次数,我不能简单地使用count,因为在每种情况下只计算一次子字符串。在

也就是说

我期望返回4,但是当我在pyCharm中用string.count('hannah')运行这个函数时,只返回2


Tags: 函数字符串stringcount情况次数pycharmhannah
3条回答

这样的怎么样?在

>>> d = {}
>>> string = 'hannahannahskdjhannahannah'
>>> for i in xrange(0,len(string)-len('hannah')+1):
...     if string[i:i+len('hannah')] == 'hannah':
...             d['hannah'] = d.get('hannah',0)+1
... 
>>> d
{'hannah': 4}
>>> 

它在string中搜索hannah,方法是将字符串从索引0迭代拼接到字符串长度减去hannah的长度

'''
s: main string
sub: sub-string
count: number of sub-strings found
p: use the found sub-string's index in p for finding the next occurrence of next sub-string
'''
count=0
p=0
for letter in s:
    p=s.find(sub,p)   
    if(p!=-1):
        count+=1
        p+=1
print count

您可以使用运行索引来获取下一个事件:

bla = 'hannahannahskdjhannahannah'
cnt = 0
idx = 0
while True:
    idx = bla.find('hannah', idx)
    if idx >= 0:
        cnt += 1
        idx += 1
    else:
        break
print(cnt)

给出:

^{pr2}$

相关问题 更多 >