Mejor respuesta
Porque es una estupidez. No puedo pensar en una aplicación útil de esta característica y me he esforzado.
(Vea la respuesta de Romain para un enfoque serio sobre «por qué exactamente», solo necesito llamar 🙂 Sin embargo, puedo proporcionar algunas soluciones)
¿Por qué no acepta un parámetro más (es decir, «final», que por defecto a «\ n», o un indicador bool, keepnl = True), de modo que puedo elegir mantener / alterar el final de línea, si, y solo si lo necesito, va más allá de mi comprensión.
Este Una “decisión política” poco intuitiva la hace prácticamente inutilizable y, en lugar de ser lenta y difícil de comprender:
lines = [ ln[:-1] for ln in f.readlines() ]
Normalmente prefiero
lines = f.read().split("\n")
Mucho más sencillo para mis ojos. Supongo que es demasiado tarde para cambiarlo ahora.
Sí, existe la posibilidad de otros finales de línea, dependiendo del sistema operativo.
Supongo que incluso las bibliotecas estándar de Python tienen sus defectos , también.
Respuesta
Esos caracteres son no extras. Están presentes en el archivo de texto. Marcan el final de las líneas.
Aquí hay otra forma de leer un archivo de texto, llamado sample.txt
, que ilustra.
>>> with open("sample.txt") as sample:
... contents = sample.readlines()
... print(contents)
...
["This is line number 1\n", "This is line number 2\n", "This is line number 3\n", "This is line number 4\n", "This is line number 5\n", "This is line number 6\n", "This is line number 7\n", "This is line number 8\n", "This is line number 9\n", "This is line number 10\n", "This is line number 11\n", "This is line number 12\n", "This is line number 13\n", "This is line number 14\n", "This is line number 15\n", "This is line number 16\n", "This is line number 17\n", "This is line number 18\n", "This is line number 19\n", "This is line number 20\n"]
- Cada línea del impreso la salida termina con
\n
porque estaban en las líneas del archivo de texto. - Sería mejor que usaras
with
cuando abre un archivo porque esta construcción se arregla para cerrar archivos después de su uso. - Noté que llamó a su archivo
file
. Debe evitar el uso de nombres que sean parte del lenguaje Python.
Si desea un código que elimine las nuevas líneas, aquí tiene una opción:
>>> with open("sample.txt") as sample:
... for line in sample:
... print(line.rstrip())
...
This is line number 1
This is line number 2
This is line number 3
This is line number 4
This is line number 5
This is line number 6
This is line number 7
This is line number 8
This is line number 9
This is line number 10
This is line number 11
This is line number 12
This is line number 13
This is line number 14
This is line number 15
This is line number 16
This is line number 17
This is line number 18
This is line number 19
This is line number 20
Nota t que utilicé rstrip
que quita los espacios en blanco solo del extremo derecho de una cadena.