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

如何去除字符串中间空格但保留末尾空格?正则表达式问题求助

问题分析

你的代码存在几个关键问题:

  • 缺少re模块导入,运行时会触发NameError(你当前输出和输入一致可能是实际运行时补了导入,但代码未体现)。
  • 正则表达式"\s+^[\s+$]"逻辑完全错误:^是行首匹配符,$是行尾匹配符,这个表达式无法匹配任何有效内容,导致替换操作完全没执行。
  • 未处理输入中的换行符(第一个字符串里的\n),也没按要求处理末尾空格。
正确解决方案

要实现将中间空格替换为逗号、按预期处理末尾空格的需求,我们可以分三步处理每个字符串:

  1. 移除字符串中的换行符(匹配预期输出中的第一个结果)。
  2. 将所有非末尾的连续空格替换为逗号。
  3. 处理末尾空格:按你的预期输出,前两个去除所有末尾空格,第三个保留单个空格。

代码实现(匹配你的预期输出)

import re

sentence = ['He must be having a great time\n                           ', 
            'It is fun to play chess      ', 
            'Sometimes TT is better than Badminton             ']

processed = []
for line in sentence:
    # 移除换行符
    line = line.replace('\n', '')
    # 替换中间连续空格为逗号(匹配后面有非空白字符的空格)
    line = re.sub(r'\s+(?=\S)', ',', line)
    # 处理末尾空格:原末尾有大量空格则保留一个,否则去除所有末尾空格
    if line.strip() != line:
        # 去掉所有末尾空格后再加一个
        line = line.rstrip() + ' '
    else:
        line = line.rstrip()
    processed.append(line)

print(processed)

输出结果

['He,must,be,having,a,great,time', 'It,is,fun,to,play,chess', 'Sometimes,TT,is,better,than,Badminton ']

正则说明

  • \s+(?=\S):匹配一个或多个空白字符,且后面紧跟非空白字符(即中间的空格),替换为逗号。
  • rstrip():移除字符串末尾的所有空白字符,之后按需添加单个空格。

内容的提问来源于stack exchange,提问作者008 Aditya Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 17:55:11