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

如何使用re.sub替换字符串中的$字符?含批量替换场景

问题解决:用re.sub替换字符串中的$符号

一、依次替换$为列表元素的正确写法

你原来的代码无效,核心问题有两个:

  1. $是正则特殊字符:它默认匹配字符串结尾或换行前的位置,必须用反斜杠转义成\$才能匹配字面意义的$符号;
  2. \b的使用错误:\b是单词边界,而$本身不是单词字符,\b\$的写法会导致匹配不到目标$。

正确的写法应该先转义$,再用lambda函数依次取出nums的元素:

import re

my_string = "We change $ to 10, $ to 22, $ to 120, $ to 230 and $ to 1000."
nums = [1, 2, 3, 4, 5]

# 用迭代器避免修改原列表(可选,pop(0)会改变原nums)
num_iter = iter(nums)
result = re.sub(r'\$', lambda _: str(next(num_iter)), my_string)
print(result)

如果不在意修改原列表,也可以直接用nums.pop(0):

result = re.sub(r'\$', lambda _: str(nums.pop(0)), my_string)

两种写法都能得到目标字符串:"We change 1 to 10, 2 to 22, 3 to 120, 4 to 230 and 5 to 1000."

二、将$替换为常量值的方法

同样需要先转义$,然后直接把常量值作为re.sub的第二个参数即可,比如要把所有$替换成"XXX":

import re

my_string = "We change $ to 10, $ to 22, $ to 120, $ to 230 and $ to 1000."
result = re.sub(r'\$', "XXX", my_string)
print(result)

输出结果:"We change XXX to 10, XXX to 22, XXX to 120, XXX to 230 and XXX to 1000."

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:20:08