Python中如何按连续相同字母分割字符串?示例说明
在Python中按连续相同字符分割字符串的方法
当然有啦!在Python里实现你要的这种连续相同字符分割需求,有两种常用思路,我给你详细说说:
方法一:用itertools.groupby(简洁高效)
这是最顺手的方案,Python标准库的itertools.groupby专门用来处理这类连续相同元素的分组问题。它会把字符串中连续的相同字符归为一组,我们只需要把每个组的字符拼接成字符串就行:
from itertools import groupby input_str = "BWWWBWWBW" split_result = [''.join(group) for key, group in groupby(input_str)] print(split_result) # 输出: ['B', 'WWW', 'B', 'WW', 'B', 'W']
简单解释下:groupby(input_str)会返回一个个元组,第一个元素是当前组的字符(比如'B'、'W'),第二个元素是对应字符的迭代器,用''.join(group)就能把迭代器里的字符拼成完整的连续字符串,最后把所有结果收集到列表里就搞定了。
方法二:手动遍历实现(适合理解逻辑)
要是你不想依赖标准库,想自己搞懂底层逻辑,手动写遍历代码也很简单。核心思路就是跟踪当前的字符组,遍历字符串时不断更新:
input_str = "BWWWBWWBW" split_result = [] if not input_str: print(split_result) else: current_char = input_str[0] current_group = current_char # 从第二个字符开始遍历 for char in input_str[1:]: if char == current_char: current_group += char else: split_result.append(current_group) current_char = char current_group = char # 别忘了把最后一组加入结果 split_result.append(current_group) print(split_result) # 输出: ['B', 'WWW', 'B', 'WW', 'B', 'W']
这个逻辑很直观:先处理空字符串的边界情况,然后初始化当前字符和对应的组,遇到相同字符就追加到当前组,遇到不同的就把当前组存入结果列表,更新当前字符和组,最后一定要把循环结束后剩下的最后一组也加进去哦。
内容的提问来源于stack exchange,提问作者Minjae Kim
相关产品推荐
相关产品推荐

