raw escape caracter python string escaping

escape - ¿Cómo puedo escapar de una cadena escapada de barra invertida en Python?



raw string python (3)

En Python 3, los objetos str no tienen un método de decode y tienes que usar un objeto bytes . La respuesta de ChristopheD cubre python 2.

# create a `bytes` object from a `str` my_str = "Hello,//nworld" # (pick an encoding suitable for your str, e.g. ''latin1'') my_bytes = my_str.encode("utf-8") # or directly my_bytes = b"Hello,//nworld" print(my_bytes.decode("unicode_escape")) # "Hello, # world"

Supongamos que tengo una cadena que es una versión de escape-barra invertida de otra cadena. ¿Hay alguna manera fácil, en Python, de deshacer el escape de la cadena? Podría, por ejemplo, hacer:

>>> escaped_str = ''"Hello,//nworld!"'' >>> raw_str = eval(escaped_str) >>> print raw_str Hello, world! >>>

Sin embargo, eso implica pasar una cadena (posiblemente no confiable) a eval (), que es un riesgo de seguridad. ¿Hay una función en la lib estándar que toma una cadena y produce una cadena sin implicaciones de seguridad?


Puede usar ast.literal_eval que es seguro:

Evaluar de forma segura un nodo de expresión o una cadena que contenga una expresión de Python. La cadena o nodo proporcionado solo puede consistir en las siguientes estructuras literales de Python: cadenas, números, tuplas, listas, dictados, booleanos y Ninguno. (FIN)

Me gusta esto:

>>> import ast >>> escaped_str = ''"Hello,//nworld!"'' >>> print ast.literal_eval(escaped_str) Hello, world!


>>> print ''"Hello,//nworld!"''.decode(''string_escape'') "Hello, world!"