Python使用re.sub替换字符串报bad escape \T错误如何解决
报错触发原因
re.sub的替换字符串参数会被re模块当作正则替换模板解析,模板中的反斜杠是特殊转义字符,用于标识正则反向引用(比如\1、\2代表匹配分组内容)等特殊规则。
你写的替换内容Flows\Temporary\001 : Unknown里的\T不属于re模块认可的合法转义序列,哪怕你用了r前缀的原始字符串(仅能避免Python解释器提前转义反斜杠),传入re模块后依然会触发转义解析错误。
修复方案
你当前的需求是固定普通子串替换,没有用到正则匹配规则,优先选择不需要正则的str.replace方法,完全避免转义冲突问题,代码如下:
actual_string = "001 : Unknown, testing" actual_string = actual_string.replace("001 : Unknown", r"Flows\Temporary\001 : Unknown") print(actual_string)
如果确实需要使用re.sub完成替换,需要将替换字符串中的所有反斜杠做双重转义,让re模块识别为普通反斜杠字符,代码如下:
import re actual_string = "001 : Unknown, testing" pattern_to_sub = "001 : Unknown" pattern_sub = r"Flows\\Temporary\\001 : Unknown" actual_string = re.sub(pattern_to_sub, pattern_sub, actual_string) print(actual_string)
两种方案执行后都可以得到预期输出:Flows\Temporary\001 : Unknown, testing
内容的提问来源于stack exchange,提问作者Sayantan Roy
相关产品推荐
相关产品推荐

