Для моей проблемы у меня есть очень простой пример:
import re
my_string = re.sub(r"Hello", r"\Greetings", "Hello Folks!")
print(my_string)
Выше, в Python 3.6, выведите \Greetings Folks!
в стандартный вывод. Давайте попробуем это снова в Python 3.7.0 или 3.7.4 (версии, которые я смог протестировать). Что происходит? Мы получаем ошибку:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.7/re.py", line 192, in sub
return _compile(pattern, flags).sub(repl, string, count)
File "/usr/lib/python3.7/re.py", line 309, in _subx
template = _compile_repl(template, pattern)
File "/usr/lib/python3.7/re.py", line 300, in _compile_repl
return sre_parse.parse_template(repl, pattern)
File "/usr/lib/python3.7/sre_parse.py", line 1024, in parse_template
raise s.error('bad escape %s' % this, len(this))
re.error: bad escape \G at position 0
Почему это? Есть ли изменения в Python 3.7, которые я пропустил? Как правильно обойти эту проблему?