You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何按相同类型字符的连续分组拆分字符串

Python将字符串拆分为连续同类型字符组的简便方法

最简便的实现可以用标准库itertools的groupby方法,只需要给每个字符定义分类规则即可,完整实现代码如下:

from itertools import groupby

s = "https:var///rer/tr.ewr,uuu234 34,5\n"

def get_char_type(c):
    # 自定义字符分类规则,可根据需求调整
    if c.isalpha():
        return "alpha" # 字母类
    elif c.isdigit():
        return "digit" # 数字类
    else:
        return "other" # 其他字符(标点、符号、空格、换行等)

result = [''.join(group) for _, group in groupby(s, key=get_char_type)]

默认输出会保留空格分组:

['https', ':', 'var', '///', 'rer', '/', 'tr', '.', 'ewr', ',', 'uuu', '234', ' ', '34', ',', '5\n']

如果不需要保留纯空格分组,加过滤条件即可:

result = [''.join(group) for _, group in groupby(s, key=get_char_type) if not (group and ''.join(group).isspace())]

过滤后结果和预期输出完全一致:

['https', ':', 'var', '///', 'rer', '/', 'tr', '.', 'ewr', ',', 'uuu', '234', '34', ',', '5\n']

原理解释

groupby会遍历字符串,把连续的、key函数返回值相同的字符分为一组,我们通过get_char_type给不同类型的字符打标签,就能实现按字符类型连续分组的需求。如果需要调整分类规则(比如把标点和空格分开、区分大小写字母等),只需要修改get_char_type的判断逻辑即可。

内容的提问来源于stack exchange,提问作者Demetry Pascal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 20:09:02