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

134
Vistas
Reemplazar un texto con \n en él, con una salida real \n

Estoy tratando de obtener una configuración de un enrutador Juniper y tengo el siguiente problema:

Después de configurar esto

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

me trae algo asi

 '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'

y el problema es que quiero recibir esa información en este formato:

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

Así que quiero que \n sea en realidad una nueva línea, y no solo que me muestre la cadena "\n".

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

0

Si está ejecutando esto en el intérprete de Python, el comportamiento normal del intérprete es mostrar líneas nuevas como "\n" en lugar de líneas nuevas reales, porque facilita la depuración de la salida. Si desea obtener nuevas líneas reales dentro del intérprete, debe print la cadena que obtiene.

Si esto es lo que genera el programa (es decir, obtiene secuencias de escape de nueva línea del programa externo), debe usar lo siguiente:

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

Esto reemplazará las nuevas líneas escapadas por nuevas líneas reales en la cadena de salida.

over 4 years ago · Santiago Trujillo Denunciar

0

Una alternativa a lo que desea es dividir su cadena en una lista de cadenas (por línea).

 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

Una expresión regular puede ayudar a localizar las secuencias \x . Sin embargo, los pares de sustitución aún tendrán que especificarse manualmente, al igual que en la respuesta de @PedroCastilho.

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

Esto reemplazará \\n -s y \\t -s con tabuladores y saltos de línea reales, y dejará intactos los desconocidos.

Me gusta

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

huellas dactilares

 foo bar baz brr \q

Así que los saltos de línea y el tabulador están en su lugar, y \q simplemente sobrevivió.

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