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

106
Vistas
Reemplace varias líneas nuevas con líneas nuevas individuales durante la lectura del archivo

Tengo el siguiente código que lee varios archivos, analiza las líneas obtenidas e imprime el resultado:

 import os import re files=[] pars=[] for i in os.listdir('path_to_dir_with_files'): files.append(i) for f in files: with open('path_to_dir_with_files'+str(f), 'r') as a: pars.append(re.sub('someword=|\,.*|\#.*','',a.read())) for k in pars: print k

Pero tengo un problema con varias líneas nuevas en la salida:

 test1 test2

En lugar de eso, quiero obtener el siguiente resultado sin líneas vacías en la salida:

 test1 test2

y así.

Intenté jugar con expresiones regulares:

 pars.append(re.sub('someword=|\,.*|\#.*|^\n$','',a.read()))

Pero no funciona. También probé usando strip() y rstrip() incluyendo replace. Tampoco funciona.

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

0

Puede usar una segunda expresión regular para reemplazar varias líneas nuevas con una sola línea nueva y usar strip para deshacerse de la última línea nueva.

 import os import re files=[] pars=[] for i in os.listdir('path_to_dir_with_files'): files.append(i) for f in files: with open('path_to_dir_with_files/'+str(f), 'r') as a: word = re.sub(r'someword=|\,.*|\#.*','', a.read()) word = re.sub(r'\n+', '\n', word).strip() pars.append(word) for k in pars: print k
over 4 years ago · Santiago Trujillo Denunciar

0

Sin cambiar mucho su código, una manera fácil sería verificar si la línea está vacía antes de imprimirla, por ejemplo:

 import os import re files=[] pars=[] for i in os.listdir('path_to_dir_with_files'): files.append(i) for f in files: with open('path_to_dir_with_files'+str(f), 'r') as a: pars.append(re.sub('someword=|\,.*|\#.*','',a.read())) for k in pars: if not k.strip() == "": print k

*** EDITAR Dado que cada elemento en pars es en realidad todo el contenido del archivo (no solo una línea), debe reemplazar cualquier línea de doble final, lo más fácil de hacer con re

 import os import re files=[] pars=[] for i in os.listdir('path_to_dir_with_files'): files.append(i) for f in files: with open('path_to_dir_with_files'+str(f), 'r') as a: pars.append(re.sub('someword=|\,.*|\#.*','',a.read())) for k in pars: k = re.sub(r"\n+", "\n", k) if not k.strip() == "": print k

Tenga en cuenta que esto no se ocupa del caso en el que un archivo termina con una nueva línea y el siguiente comienza con uno; si ese es un caso que le preocupa, necesita agregar lógica adicional para manejarlo o cambiar la forma en que estoy leyendo los datos en

over 4 years ago · Santiago Trujillo Denunciar

0

solo uno simple, pero puede no ser eficiente.

 entire_file = "whatever\nmay\n\n\n\nhappen" while '\n\n' in entire_file: entire_file = entire_file.replace("\n\n", "\n") print(entire_file)
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