How to escape special characters of a string with single backslashes

53

I'm trying to escape the characters -]\^$*. each with a single backslash \.

For example the string: ^stack.*/overflo\w$arr=1 will become:

\^stack\.\*/overflo\\w\$arr=1

What's the most efficient way to do that in Python?

re.escape double escapes which isn't what I want:

'\\^stack\\.\\*\\/overflow\\$arr\\=1'

I need this to escape for something else (nginx).

This question is tagged with python nginx escaping

~ Asked on 2013-09-21 17:55:26

The Best Answer is


122

This is one way to do it (in Python 3.x):

escaped = a_string.translate(str.maketrans({"-":  r"\-",
                                          "]":  r"\]",
                                          "\\": r"\\",
                                          "^":  r"\^",
                                          "$":  r"\$",
                                          "*":  r"\*",
                                          ".":  r"\."}))

For reference, for escaping strings to use in regex:

import re
escaped = re.escape(a_string)

~ Answered on 2013-09-21 17:56:56


18

Just assuming this is for a regular expression, use re.escape.

~ Answered on 2013-09-21 17:57:03


Most Viewed Questions: