Beste svaret
Fordi det er dumt. Jeg kan ikke tenke meg en nyttig anvendelse av denne -funksjonen , og jeg har prøvd hardt å gjøre det.
(Se Romains svar for en seriøs tilnærming til «hvorfor akkurat», jeg trenger bare å flamme 🙂 Jeg kan gi noen løsninger, skjønt)
Hvorfor godtar den ikke en parameter til (dvs. «slutt», som standard til “\ n”, eller et bool-flagg, keepnl = True), slik at jeg kan velge å beholde / endre linjeslutning, hvis, og bare hvis jeg trenger en, går utover min forståelse.
Dette uintuitiv «policy-avgjørelse» gjør den praktisk talt ubrukelig og i stedet for langsom og vanskelig å forstå:
lines = [ ln[:-1] for ln in f.readlines() ]
Jeg foretrekker vanligvis
lines = f.read().split("\n")
Mye enklere for mine øyne. Jeg antar at det er for sent å endre det nå.
Ja, det er mulighet for andre linjeendelser, avhengig av operativsystemet.
Jeg antar at selv python-standard-libs har sine feil også.
Svar
Disse tegnene er ikke statister. De er tilstede i tekstfilen. De markerer endene på linjene.
Her er en annen måte å lese en tekstfil på, kalt sample.txt
, som illustrerer.
>>> 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"]
- Hver linje i den trykte utgangen slutter med
\n
fordi de var i linjene i tekstfilen. - Det er bedre å bruke
with
når du åpner en fil fordi denne konstruksjonen ordner med å lukke filer etter bruk. - Jeg merker at du ringte filen din
file
. Du bør unngå å bruke navn som er en del av Python-språket.
Hvis du vil ha kode som fjerner de nye linjene, er 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
Merk t hatt jeg brukte rstrip
som fjerner hvite mellomromstegn fra bare høyre ende av en streng.