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

如何在字符串中每个'Q'后添加对应出现序号?

更优解决方案分析

你的代码能实现需求,但存在两处可以优化的地方:一是每次循环都重新遍历字符串查找所有Q,效率会随着匹配数量增加而降低;二是正则匹配所有单独的Q,如果字符串里有非Q =格式的Q,会错误加上序号。

下面是两种更高效精准的实现方式:

方法一:用re.sub的回调函数+全局计数器

利用re.sub支持替换函数的特性,每次匹配到目标Q =时自动递增序号:

import re

test = '''Q = 1 t h 
 Q = 2 t h 
 Q = 3 t h'''

count = 0
def add_number(match):
    global count
    count += 1
    return f'Q{count} ='

result = re.sub(r'Q =', add_number, test)
print(result)

方法二:用闭包封装计数器(避免全局变量)

如果不想用全局变量,用闭包把计数器封装起来更优雅:

import re

test = '''Q = 1 t h 
 Q = 2 t h 
 Q = 3 t h'''

def get_replacer():
    count = 0
    def replacer(match):
        nonlocal count
        count += 1
        return f'Q{count} ='
    return replacer

result = re.sub(r'Q =', get_replacer(), test)
print(result)

为什么这两种方法更好?

  • 效率更高:只需要遍历字符串一次,不用每次循环都重新查找所有匹配项;
  • 匹配精准:正则r'Q ='只针对目标格式,不会误处理其他场景的Q;
  • 代码更简洁:省去了手动切片拼接字符串的麻烦,可读性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 17:22:11