Escapar de los caracteres escapados en una cadena usando Python 3.2

Digamos que tengo una cadena en Python 3.2 como esta:

'\n' 

Cuando lo imprimo () en la consola, se muestra como una nueva línea, obviamente. Lo que quiero es poder imprimirlo literalmente como una barra invertida seguida de una n. Además, necesito hacer esto para todos los personajes escapados, como \ t. Así que estoy buscando una función unescape () que, para el caso general, funcionaría de la siguiente manera:

 >>> s = '\n\t' >>> print(unescape(s)) '\\n\\t' 

¿Es esto posible en Python sin construir un diccionario de caracteres escapados para sus reemplazos literales?

(En caso de que alguien esté interesado, la razón por la que hago esto es porque necesito pasar la cadena a un progtwig externo en la línea de comandos. Este progtwig comprende todas las secuencias de escape estándar).

Para evitar un tratamiento especial de \ en una cadena literal, puede usar el prefijo r :

 s = r'\n' print(s) # -> \n 

Si tiene una cadena que contiene un símbolo de nueva línea ( ord(s) == 10 ) y desea convertirlo a una forma adecuada como literal de Python:

 s = '\n' s = s.encode('unicode-escape').decode() print(s) # -> \n 

Edición: en función de su último comentario, es probable que desee obtener de Unicode a alguna representación codificada. Esta es una forma:

 >>> s = '\n\t' >>> s.encode('unicode-escape') b'\\n\\t' 

Si no necesita que se escapen, use la encoding del sistema, por ejemplo:

 >>> s.encode('utf8') b'\n\t' 

Podrías usar eso en un subproceso:

 import subprocess proc = subprocess.Popen([ 'myutility', '-i', s.encode('utf8') ], stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.STDOUT) stdout,stderr = proc.communicate()