Согласно документации , встроенная строковая кодировка string_escape
:
Создать [s] строку, подходящую в качестве строкового литерала в исходном коде Python
... в то время как unicode_escape
:
Создать [s] строку, подходящую в качестве литерала Unicode в исходном коде Python
Итак, они должны вести себя примерно одинаково. НО, похоже, они по-разному трактуют одинарные кавычки:
>>> print """before '" \0 after""".encode('string-escape')
before \'" \x00 after
>>> print """before '" \0 after""".encode('unicode-escape')
before '" \x00 after
string_escape
экранирует одинарную кавычку, а Unicode - нет. Можно ли предположить, что я могу просто:
>>> escaped = my_string.encode('unicode-escape').replace("'", "\\'")
... и получить ожидаемое поведение?
Редактировать: Просто чтобы быть предельно ясным, ожидаемое поведение получает что-то подходящее в качестве литерала.