According to the docs, la cadena de codificación incorporado string_escape
:Python "string_escape" vs "unicode_escape"
Produce [s] una cadena que es adecuado como cadena literal en el código fuente de Python
... mientras que el unicode_escape
:
Produce [s] una cadena que es adecuado como Unicode literal en el código fuente Python
Por lo tanto, deberían tener más o menos el mismo comportamiento. PERO, aparecen para tratar de manera diferente entre comillas simples:
>>> print """before '" \0 after""".encode('string-escape')
before \'" \x00 after
>>> print """before '" \0 after""".encode('unicode-escape')
before '" \x00 after
El string_escape
escapa a la comilla simple mientras que el Unicode no lo hace. ¿Es seguro asumir que puedo simplemente:
>>> escaped = my_string.encode('unicode-escape').replace("'", "\\'")
... y obtener el comportamiento esperado?
Editar: Para ser súper claro, el comportamiento esperado es obtener algo adecuado como un literal.
Esta ha sido la respuesta más clara a algún error unicode 'secuencia de escape Unicode no soportada' ¡Incluso funciona en 2016! ¡Gracias! – dotslash