You can also use the re.escape method, to escape the strings before building a regex with it.
Before:
Before:
>>> import re >>> [re.compile(r"[{0}]".format(chr(i))) for i in range(33, 126)] Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <listcomp> File "C:\Users\_\AppData\Local\Programs\Python\Python35-32\lib\re.py", line 224, in compile return _compile(pattern, flags) File "C:\Users\_\AppData\Local\Programs\Python\Python35-32\lib\re.py", line 293, in _compile p = sre_compile.compile(pattern, flags) File "C:\Users\_\AppData\Local\Programs\Python\Python35-32\lib\sre_compile.py", line 536, in compile p = sre_parse.parse(p, flags) File "C:\Users\_\AppData\Local\Programs\Python\Python35-32\lib\sre_parse.py", line 829, in parse p = _parse_sub(source, pattern, 0) File "C:\Users\_\AppData\Local\Programs\Python\Python35-32\lib\sre_parse.py", line 437, in _parse_sub itemsappend(_parse(source, state)) File "C:\Users\_\AppData\Local\Programs\Python\Python35-32\lib\sre_parse.py", line 545, in _parse source.tell() - here) sre_constants.error: unterminated character set at position 0After:
>>> [re.compile(r"[{0}]".format(re.escape(chr(i)))) for i in range(33, 126)] [re.compile('[\\!]'), re.compile('[\\"]'), re.compile('[\\#]'), re.compile('[\\$]'), re.compile('[\\%]'), re.compile('[\\&]'), re.compile("[\\']"), re.compile('[\\(]'), re.compile('[\\)]'), re.compile('[\\*]'), re.compile('[\\+]'), re.compile('[\\,]'), #snipped