You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何使用Python的re.sub方法将文本中的单词替换为等长下划线?

使用Python的re.sub将单词替换为等长下划线

你遇到的这个问题其实用re.sub就能一步搞定,核心是利用它支持函数作为替换值的特性——这也是你之前尝试的写法没生效的原因:直接写len(\1)*"_"是字符串层面的语法,re.sub不会帮你执行Python表达式,而且\1在字符串里也不会被解析成匹配组。

正确的实现代码

import re

input_text = "hello ** abc"
output_text = re.sub(r'\w+', lambda m: '_' * len(m.group()), input_text)
print(output_text)  # 输出结果:_____ ** ___

代码解释

  • 这里传给re.sub的第二个参数是一个匿名lambda函数,它会接收每个匹配到的Match对象(这里用m作为参数名)
  • 通过m.group()可以获取到当前匹配的完整单词(比如第一个匹配到的"hello",第二个是"abc")
  • '_' * len(m.group())生成和原单词长度完全一致的下划线字符串,作为替换内容

如果你的场景里“单词”的定义需要调整(比如包含撇号'或者连字符),只需要修改正则表达式即可,比如改成r"\b[\w']+\b"就能匹配像don't这样的单词。

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

火山引擎 最新活动