Bästa svaret
Eftersom det är dumt. Jag kan inte tänka mig en användbar tillämpning av denna -funktion och jag har försökt hårt.
(Se Romains svar för ett seriöst tillvägagångssätt för ”varför exakt”, jag behöver bara flamma 🙂 Jag kan dock tillhandahålla några lösningar.
Varför accepterar den inte ytterligare en parameter (dvs. ”slut”, som standardvärde till “\ n”, eller en bool-flagga, keepnl = True), så att jag kan välja att behålla / ändra radslut, om, och bara om jag behöver en, går utöver min förståelse.
Detta ointuitivt ”policybeslut” gör det praktiskt taget oanvändbart och istället för långsamt och svårt att förstå:
lines = [ ln[:-1] for ln in f.readlines() ]
Jag föredrar vanligtvis
lines = f.read().split("\n")
Mycket enklare för mina ögon. Jag antar att det är för sent att ändra det nu.
Ja, det finns en möjlighet till andra radslut, beroende på operativsystem.
Jag antar att även python-standard-libs har sina brister också.
Svar
Dessa tecken är inte extrafunktioner. De finns i textfilen. De markerar ändarna på raderna.
Här är ett annat sätt att läsa en textfil, kallad sample.txt
, som illustrerar.
>>> 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"]
- Varje rad i den tryckta utgången slutar med
\n
eftersom de stod i raderna i textfilen. - Du skulle vara bättre att använda
with
när du öppnar en fil eftersom den här konstruktionen ordnar att stänga filer efter användning. - Jag märker att du ringde din fil
file
. Du bör undvika att använda namn som ingår i Python-språket.
Om du vill ha kod som tar bort de nya raderna är det ett alternativ:
>>> 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
Obs t hatt jag använde rstrip
som tar bort vita blanksteg från endast den högra änden av en sträng.