我知道这在其他地方已经介绍过,但我的使用案例给我造成了困难。Python re.sub给出错误:无效的组参考
如果什么字符串有一个可怕的“\ 3”字像这样的:
new_data = r'C:\temp\3_times.csv'
...然后重新“认为”,你指的是它作为一个群体,所以如果你尝试利用这些数据,那么你得到这个错误做了子:
newfiledata = re.sub(old_data,new_data,filedata)
error: invalid group reference
有什么办法避免这种错误,而不要找的字符串在这种情况下,直接修改它传递之前,这将需要大量的额外代码。
注意:对于用法,我打算使用转义字符修改字符串不是一个选项,因为我需要稍后使用子函数写入字符串。所以这不是关于如何转义特殊字符的问题的重复。
在任何正则表达式中,文字反斜杠必须转义。作为一个正则表达式,它将是'r'C:\\ temp \\ 3_times \ .csv''你应该做的是从你的正则表达式字面值中提取元字符。你可以使用'r'([。^#| * +?()\ [\] {} \\ - ])''替换为'\\ $ 1' – sln
@sln不会'r'制作它是一个原始的字符串,并使它不必逃避你的斜杠?或者是不是这样? – jacoblaw
@jacoblaw - 这是你传递给正则表达式的引擎。所有文字元字符都必须转义。 – sln