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 
\nporque estaban en las líneas del archivo de texto. -  Sería mejor que usaras 
withcuando 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.