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

如何使用re.sub遍历列表实现批量文本替换?

解决遍历wordList批量替换文本的问题

嘿,我看你遇到的问题是循环里只替换了列表第一个元素对吧?这是因为你的代码里有两个小问题:

  • 循环时一直用wordList[0]固定处理第一个元素,根本没用到循环变量word
  • 每次替换都是基于原始的txt,没有把上一次替换的结果传递下去,导致之前的替换效果没被保留

咱们来修改一下代码,实现遍历所有元素的替换:

import re
txt='affirmed and the affirmance and AFFIRMED and Affirm case'
wordList = ['case', 'affirm\w+', '(ca\w+)']

# 先把out初始化为原始文本,后续替换都基于这个变量迭代
out = txt
for word in wordList:
    # 用当前循环的word作为匹配规则,替换为空格,忽略大小写
    out = re.sub(word, ' ', out, flags=re.I)

print(out)

关键修改点说明:

  1. 初始化累积变量:把out初始成原始的txt,这样每次替换都是在上一次替换后的结果上进行,保证所有规则都能生效
  2. 使用循环变量:循环里用word代替wordList[0],这样就能依次处理列表里的每个匹配规则
  3. 修正flags参数:原来的代码把re.I放在了count参数的位置(re.sub的第四个参数是count),这会导致只替换2次(因为re.I的值是2),现在改成flags=re.I,正确启用忽略大小写的匹配规则

运行这段代码后,所有在wordList里的规则都会被依次应用,把匹配到的内容替换成空格啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:34:25