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

Python正则实现首字母大写相邻单词间空格替换为下划线的高效方案

实现方案

你可以通过匹配连续首字母大写的单词序列,再对匹配结果内部的空格做替换实现需求。Python re 模块的 re.sub 方法支持传入回调函数处理匹配结果,底层为C实现,批量处理文本效率很高,不需要额外的暴力循环逻辑。

示例代码

import re

def cap_words_space_to_underscore(text):
    # 正则匹配连续的首字母大写单词序列
    pattern = r'\b[A-Z][a-z]*(?:\s[A-Z][a-z]*)+\b'
    return re.sub(pattern, lambda match: match.group().replace(' ', '_'), text)

效果验证

输入文本:

Roger Federer is a tennis player. Rafael Nadal Parera is also a tennis player. Another legend player is Novak Djokovic.

调用函数后输出:

Roger_Federer is a tennis player. Rafael_Nadal_Parera is also a tennis player. Another legend player is Novak Djokovic.

正则说明

  • \b 匹配单词边界,避免匹配单词内部的大写字符
  • [A-Z][a-z]* 匹配首字母大写、后续为小写字母的常规英文单词
  • (?:\s[A-Z][a-z]*)+ 非捕获组,匹配1个及以上「空格+首字母大写单词」的组合,和前面的单词共同组成连续首字母大写的单词序列
  • 匹配到符合规则的序列后,通过lambda回调将序列内的所有空格直接替换为下划线,逻辑简单易维护

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:09:03