Python 统计字符串中子字符串的重复出现次数

Python 统计字符串中子字符串的重复出现次数,python,regex,string,count,Python,Regex,String,Count,假设我有一根这样的绳子 aa = 'booked#booked#available#available#available#available#available#booked#available#booked' 现在我想知道'available'子字符串在这个字符串中重复出现了多少次。因此,在本例中,它应该是5,因为“可用”重复出现了5次,如果有人能够提供python库函数本身来获得它,这将非常有用,正则表达式解决方案也很受欢迎 到目前为止,我所尝试的是 aa.count('#availab

假设我有一根这样的绳子

aa = 'booked#booked#available#available#available#available#available#booked#available#booked'
现在我想知道
'available'
子字符串在这个字符串中重复出现了多少次。因此,在本例中,它应该是5,因为“可用”重复出现了5次,如果有人能够提供python库函数本身来获得它,这将非常有用,正则表达式解决方案也很受欢迎

到目前为止,我所尝试的是

aa.count('#available')
这显然给了我6分

aa.count('#available#available')
这又错了

import re
count(re.findall('available#'))
也是错误的

对于这些类型的问题,itertools是极好的:

from itertools import groupby
aa = 'booked#booked#available#available#available#available#available#booked#available#booked'
words = aa.split('#')
for key, group in groupby(words):
    print len(list(group)), key
输出:

2 booked
5 available
1 booked
1 available
1 booked

下面是我在2.7中是如何做到的

import re
aa = 'booked#booked#available#available#available#available#available#booked#available#booked'
len(re.findall('#available', aa))
我想你可以根据你提供的图案安全地去掉英镑标志

>>> stuff = re.findall('available', aa)
>>> stuff
['available', 'available', 'available', 'available', 'available', 'available']

澄清一下,你想只计算重复次数吗?因此,除了第一个实例之外,所有实例都要计算连续出现的次数。