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

寻求合并字符串中连续大写字符的最优Pythonic实现方案

合并字符串中连续空格分隔的大写字符的Pythonic实现

最佳实现方案

用正则表达式的re.sub可以简洁解决这个问题,一行代码就能完成需求:

import re

s = "You can pay N O W or Pay me Back MY Money later"
result = re.sub(r'([A-Z]) (?=[A-Z])', r'\1', s)
print(result)
# 输出: You can pay NOW or Pay me Back MY Money later

原理说明

  • 正则模式r'([A-Z]) (?=[A-Z])':匹配一个大写字母,后面紧跟一个空格,且这个空格的下一个字符也是大写字母(正向预查(?=[A-Z])确保只匹配大写字母之间的空格,不会误删其他空格)。
  • 替换为r'\1':只保留匹配到的大写字母,去掉中间的空格,从而把连续空格分隔的大写字母合并成一个连续的字符串。

你的代码问题分析

你的实现逻辑存在几个问题:

  1. 仅处理第一个匹配片段:最后只替换了replace_maps中的第一个项,没有循环处理所有需要合并的连续大写序列。
  2. 索引计算错误:循环中跳过了空格字符,导致start和end的位置没有正确包含需要替换的空格区域,替换时会把原字符串中未处理的部分重复保留(比如你得到的PAYNOWW就是因为索引范围错误导致重复拼接了字符)。
  3. 逻辑冗余复杂:手动遍历字符的方式不仅容易出错,也不符合Python追求简洁的风格,正则表达式是处理这类字符串模式匹配问题的更优选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:40:34