Solución:
Qué tal si:
text = os.linesep.join([s for s in text.splitlines() if s])
dónde text
¿La cadena tiene las posibles líneas extrañas?
"n".join([s for s in code.split("n") if s])
Edición 2:
text = "".join([s for s in code.splitlines(True) if s.strip("rn")])
Creo que esa es mi versión final. Debería funcionar bien incluso con finales de línea de mezcla de código. No creo que la línea con espacios deba considerarse vacía, pero si es así, en su lugar, bastará con un simple s.strip ().
LECCIÓN SOBRE ELIMINACIÓN DE LÍNEAS NUEVAS y LÍNEAS VACÍAS CON ESPACIOS
“t” es la variable con el texto. Verá una variable “s”, es una variable temporal que solo existe durante la evaluación del conjunto principal de paréntesis (olvidé el nombre de estas pequeñas cosas de Python)
Primero establezcamos la variable “t” para que tenga nuevas líneas:
>>> t="hi there here isna big linennof emptynlineneven some with spacesn nlike thatnn nokay now what?n"
Tenga en cuenta que hay otra forma de establecer la variable usando comillas triples
somevar="""
asdfas
asdf
asdf
asdf
asdf
""""
Así es como se ve cuando lo vemos sin “imprimir”:
>>> t
'hi there here isna big linennof emptynlineneven some with spacesn nlike thatnn nokay now what?n'
Para ver con nuevas líneas reales, imprímalo.
>>> print t
hi there here is
a big line
of empty
line
even some with spaces
like that
okay now what?
COMANDO ELIMINAR TODAS LAS LÍNEAS EN BLANCO (INCLUYENDO LOS ESPACIOS):
Por lo tanto, algunas líneas nuevas son solo líneas nuevas, y algunas tienen espacios para que parezcan líneas nuevas.
Si desea deshacerse de todas las líneas en blanco (si solo tienen líneas nuevas o espacios también)
>>> print "".join([s for s in t.strip().splitlines(True) if s.strip()])
hi there here is
a big line
of empty
line
even some with spaces
like that
okay now what?
O:
>>> print "".join([s for s in t.strip().splitlines(True) if s.strip("rn").strip()])
hi there here is
a big line
of empty
line
even some with spaces
like that
okay now what?
NOTA: esa tira en t.strip (). Splitline (True) se puede eliminar, por lo que solo son t.splitlines (True), pero luego su salida puede terminar con una nueva línea adicional (para que elimine la nueva línea final). La tira () en la última parte s.strip (” r n”). Strip () y s.strip () es lo que realmente elimina los espacios en nuevas líneas y nuevas líneas.
COMANDO ELIMINAR TODAS LAS LÍNEAS EN BLANCO (PERO NO LAS QUE TIENEN ESPACIOS):
Técnicamente, las líneas con espacios NO deben considerarse vacías, pero todo depende del caso de uso y de lo que intente lograr.
>>> print "".join([s for s in t.strip().splitlines(True) if s.strip("rn")])
hi there here is
a big line
of empty
line
even some with spaces
like that
okay now what?
** NOTA SOBRE ESA tira MEDIA **
Esa franja del medio, que está adjunta a la variable “t”, simplemente elimina la última línea nueva (tal como se indica en la nota anterior). Así es como se vería sin esa tira allí (observe la última línea nueva)
Con el primer ejemplo (eliminando nuevas líneas y nuevas líneas con espacios)
>>> print "".join([s for s in t.strip().splitlines(True) if s.strip("rn").strip()])
hi there here is
a big line
of empty
line
even some with spaces
like that
okay now what?
.without strip new line here (stackoverflow cant have me format it in).
Con el segundo ejemplo (solo eliminando nuevas líneas)
>>> print "".join([s for s in t.strip().splitlines(True) if s.strip("rn")])
hi there here is
a big line
of empty
line
even some with spaces
like that
okay now what?
.without strip new line here (stackoverflow cant have me format it in).
¡El fin!