如何在Python 3中统计字符串中连续重复字母的实例数?
统计连续多个'O'的组数
没问题,我来帮你搞定这个需求——统计字符串里连续出现至少两个'O'的片段数量(也就是你说的“连续多个'O'的次数”)。下面给你两种实现思路和代码示例:
方法一:正则表达式(简洁高效)
正则表达式可以快速匹配所有连续2个及以上的'O',直接统计匹配结果的数量就行,代码非常简洁:
import re def count_multiple_o_groups(s): # 匹配连续2个或更多的'O' matches = re.findall(r'O{2,}', s) return len(matches) # 测试示例 test_str = "EOOOEOEE" print(count_multiple_o_groups(test_str)) # 输出: 1 # 再试几个例子 print(count_multiple_o_groups("OOEOO")) # 输出: 2 print(count_multiple_o_groups("OEOEO")) # 输出: 0 print(count_multiple_o_groups("OOOO")) # 输出: 1
解释:
r'O{2,}'是正则表达式,意思是匹配连续出现2次或更多次的'O';re.findall()会返回所有符合条件的片段组成的列表,列表的长度就是我们要的组数。
方法二:手动遍历(适合理解底层逻辑)
如果不想用正则,也可以手动遍历字符串,跟踪当前是否处于连续'O'的片段中,同时记录片段长度,最后统计符合条件的组数:
def count_multiple_o_groups(s): count = 0 current_o_length = 0 for char in s: if char == 'O': current_o_length += 1 else: # 遇到非'O',检查之前的连续O长度是否≥2 if current_o_length >= 2: count += 1 current_o_length = 0 # 重置计数 # 处理字符串结尾是连续'O'的情况 if current_o_length >= 2: count += 1 return count # 测试示例 test_str = "EOOOEOEE" print(count_multiple_o_groups(test_str)) # 输出: 1
解释:
- 初始化
count(结果计数)和current_o_length(当前连续O的长度); - 遍历每个字符:
- 如果是'O',就增加当前连续长度;
- 如果不是'O',就检查之前的连续O长度是否≥2,是的话计数加1,然后重置当前长度;
- 遍历结束后,还要检查最后一段是否是连续≥2的'O',避免遗漏。
两种方法都能完美解决你的问题,你可以根据自己的需求选择~
内容的提问来源于stack exchange,提问作者user9342203




