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

如何按单个空格分割字符串且保留多余空格?

解决单个空格分隔且保留前导空格元素的问题

没问题!你想要的效果完全可以实现,普通的split方法确实满足不了需求——split()会自动合并所有连续空格,split(" ")则会在连续空格的位置生成空字符串,都没法直接得到带前导空格的元素。

这里给你一个简单的方案,用正则表达式的re.split配合负向回顾后发断言来实现:

import re

s = "alpha beta  gamma delta"
result = re.split(r'(?<! ) ', s)
print(result)  # 输出: ["alpha", "beta", " gamma", "delta"]

原理说明

正则表达式(?<! ) 的意思是:只分割那些前面不是空格的单个空格。这样一来:

  • alpha和beta之间的单个空格会被当作分隔符
  • beta后面的两个空格中,第一个空格因前面是beta的字符(非空格)会触发分割,但第二个空格前面是空格,不会被分割,因此会被保留在gamma的开头
  • gamma和delta之间的单个空格同样会被当作分隔符,最终得到你想要的结果

另外还有一种思路,用re.findall直接匹配符合要求的元素:

import re

s = "alpha beta  gamma delta"
result = re.findall(r'\S.*?(?= |$)', s)
print(result)  # 同样输出: ["alpha", "beta", " gamma", "delta"]

这个正则的逻辑是匹配从非空格字符开始,到下一个空格或字符串结尾的所有内容,自然就能把连续空格中多余的部分留在下一个元素的开头。

内容的提问来源于stack exchange,提问作者Zachary Goshen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:35:36