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

Python按空格分割字符串并保留分隔符长度的更优实现方法

解决方案

你可以直接使用re.findall实现需求,代码非常简洁:

import re
string = "This            is a                      test."
result = re.findall(r'\S+|\s+', string)
print(result)
# 输出:['This', '            ', 'is', ' ', 'a', '                      ', 'test.']

逻辑说明

  • 正则表达式\S+|\s+会依次匹配两种模式:
    • \S+:长度大于等于1的连续非空白字符
    • \s+:长度大于等于1的连续空白字符
  • re.findall会按字符串的顺序返回所有匹配结果,刚好完全匹配你的预期输出,不需要额外处理空值或者拼接字符。

你之前使用re.split不符合预期是因为你分组的是单个空格( ),每个空格都会被单独识别为分隔符,所以会返回大量单个空格和空字符串的组合。


无正则的备选方案

如果你不想引入正则模块,也可以用itertools.groupby实现:

from itertools import groupby
string = "This            is a                      test."
result = [''.join(group) for _, group in groupby(string, key=lambda c: c.isspace())]
print(result)
# 输出和上述方案完全一致

这个方案通过判断字符是否为空格进行分组,将连续的同类型字符合并为列表元素。

内容的提问来源于stack exchange,提问作者Amir Shabani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 19:15:04