Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

135
Vistas
Replacing a text with \n in it, with a real \n output

I am trying to get a config from a juniper router and I have the following problem:

After setting this

stdin, stdout, stderr = client1.exec_command('show configuration interfaces %s' % SID)
 CONFIG = stdout.read()
 print CONFIG

It brings me something like these

'description El_otro_Puerto_de_la_Routing-instance;\nvlan-id 309;\nfamily inet {\n    mtu 1600;\n    address 10.100.10.10/24;\n}\n'

and the problem is that I want to receive that information in this format:

'description El_otro_Puerto_de_la_Routing-instance;
 nvlan-id 309;
 nfamily inet {
  mtu 1600;
  address 10.100.10.10/24;
 }

So I want the \n to actually be a new line, and not just to show me the "\n" string.

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

If you're running this in the Python interpreter, it is the regular behavior of the interpreter to show newlines as "\n" instead of actual newlines, because it makes it easier to debug the output. If you want to get actual newlines within the interpreter, you should print the string you get.

If this is what the program is outputting (i.e.: You're getting newline escape sequences from the external program), you should use the following:

OUTPUT = stdout.read()
formatted_output = OUTPUT.replace('\\n', '\n').replace('\\t', '\t')
print formatted_output

This will replace escaped newlines by actual newlines in the output string.

over 4 years ago · Santiago Trujillo Denunciar

0

An alternative to what you want is splitting your string into a list of strings (per line).

mystr = 'a\nb\nc'
mystr = mystr.split(sep='\n')
print(mystr)
#this will be your print output:['a', 'b', 'c']
for s in mystr:
    print(s)
#your print output:
#a
#b
#c
over 4 years ago · Santiago Trujillo Denunciar

0

A regular expression can help with locating the \x sequences. The substitution-pairs will still have to be specified manually though, just like in @PedroCastilho's answer.

import re
CONFIG = stdout.read()
print(re.sub(r'\\.',lambda x:{'\\n':'\n','\\t':'\t'}.get(x[0],x[0]),CONFIG))

This will replace \\n-s and \\t-s with actual line breaks and tabulators, and leaves the unknown ones intact.

Like

print(re.sub(r'\\.',lambda x:{'\\n':'\n','\\t':'\t'}.get(x[0],x[0]),
      'foo\\nbar\\nbaz\\tbrr\\n\\q'))

prints

foo
bar
baz     brr
\q

So line breaks and the tabulator are in place, and \q simply survived.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda