我知道這在其他地方已經介紹過,但我的使用案例給我造成了困難。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