Python re.sub,带有一个包含特殊字符但不修改字符串的字符串

时间:2017-07-26 23:47:06

标签: python regex

我的问题是,为了做sub我需要逃避一个特殊的角色。但我不想修改我替换的字符串。 Python有办法解决这个问题吗?

fstring = r'C:\Temp\1_file.txt' #this is the new data that I want to substitute in
old_data = r'Some random text\n .*' #I'm looking for this in the file that I'll read
new_data = r'Some random text\n '+fstring  #I want to change it to this
f = open(myfile,'r') #open the file
filedata = f.read() #read the file
f.close()
newfiledata = re.sub(old_data,new_data,filedata) #substitute the new data

由于" \ 1"返回错误在in" fstring"被视为一个群体对象。

error: invalid group reference

2 个答案:

答案 0 :(得分:1)

逃离最终的反斜杠:

new_data = r'Some random text\n ' + fstring.replace('\\', r'\\')

答案 1 :(得分:0)

\1通常意味着对正则表达式匹配的第1组进行反向引用,但这不是您想要的(实际上没有第1组,这是错误的原因),您将会这样做因此,需要转义字符串,因此re不会将\1视为元字符:

fstring = r'C:\Temp\\1_file.txt'