¿Por qué Python readlines () produce ' \ n ' entre líneas al leer un archivo de texto?


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.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *