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

如何移除字符串中多余空格但保留换行符\n?

保留换行符的同时压缩连续空格

给定字符串:

s = 'Hello   \nWorld!\nToday is a wonderful day'

需要将其中连续的多个空格替换为单个空格,但保留换行符,得到结果:

'Hello \nWorld!\nToday is a wonderful day'

之前使用split()+join()或re.sub(r"\s+", " ", s)的方法会把换行符也替换成空格,导致结果不符合预期——这是因为split()会分割所有空白字符(包括换行),而\s+会匹配所有空白类型(空格、换行、制表符等)。

正确解决方案

使用正则表达式仅匹配连续的空格字符,而非所有空白:

import re

s = 'Hello   \nWorld!\nToday is a wonderful day'
processed_str = re.sub(r' +', ' ', s)
print(repr(processed_str))

运行后输出:

'Hello \nWorld!\nToday is a wonderful day'

扩展:处理其他空白(如制表符)但保留换行

如果字符串中存在制表符等其他空白字符,且希望将它们也替换为单个空格但保留换行,可以使用:

processed_str = re.sub(r'[^\S\n]+', ' ', s)

这里[^\S\n]表示匹配除了非空白字符(\S)和换行符(\n)之外的所有空白字符,替换后仍会保留原有的换行结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:18:30