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

4
假设我有一个像这样的字符串
aa = 'booked#booked#available#available#available#available#available#booked#available#booked'

现在我想要找出字符串中重复出现了多少次子字符串'available'。在这种情况下,它应该重复出现5次,如果有人能给出一个 Python 库函数本身来获取此结果将非常有帮助,也欢迎使用正则表达式解决。

到目前为止,我尝试过的方法是:

aa.count('#available')

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

这又是错误的。

import re
count(re.findall('available#'))

也是错误的


只是为了澄清,您想要仅计算重复次数吗?所以除第一个以外的所有实例? - arturomp
OP想要计算连续出现的次数。 - BartoszKP
2个回答

14

itertools 中的 groupby 函数非常适用于这种类型的问题:

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

1
这是我在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']

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接