Bedste svar
Fordi det er dumt. Jeg kan ikke tænke på en nyttig anvendelse af denne -funktion , og jeg har prøvet hårdt at gøre det.
(Se Romains svar til en seriøs tilgang til “hvorfor nøjagtigt”, jeg skal bare flamme 🙂 Jeg kan dog give nogle løsninger)
Hvorfor accepterer den ikke endnu en parameter (dvs. “slutning”, der er standard til “\ n” eller et bool-flag, keepnl = True), så jeg kan vælge at holde / ændre linjeslutning, hvis og kun hvis jeg har brug for en, går ud over min forståelse.
Dette uintuitiv “politisk beslutning” gør den praktisk talt ubrugelig og i stedet for den langsomme og vanskelige at forstå:
lines = [ ln[:-1] for ln in f.readlines() ]
Jeg foretrækker normalt
lines = f.read().split("\n")
Meget mere ligetil for mine øjne. Jeg antager, at det er for sent at ændre det nu.
Ja, der er mulighed for andre linieendelser, afhængigt af operativsystemet.
Jeg antager, at selv python-standard-libs har deres fejl også.
Svar
Disse tegn er ikke ekstraudstyr. De er til stede i tekstfilen. De markerer enderne af linjer.
Her er en anden måde at læse en tekstfil på, kaldet 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 udskrevne output slutter med
\n
fordi de var i linjerne i tekstfilen. - Det ville være bedre at bruge
with
når du åbner en fil, fordi denne konstruktion arrangerer at lukke filer efter brug. - Jeg bemærker, at du kaldte din fil
file
. Du bør undgå at bruge navne, der er en del af Python-sproget.
Hvis du vil have kode, der fjerner de nye linjer, er her en mulighed:
>>> 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
Bemærk t hat jeg brugte rstrip
som fjerner hvide mellemrumstegn fra kun den højre ende af en streng.