Legjobb válasz
Mert hülyeség. Nem jut eszembe ennek a funkciónak hasznos alkalmazása, és nagyon igyekeztem.
(Lásd Romain válaszát komoly megközelítés a „miért pont” -ról, csak lángolnom kell 🙂 Néhány megoldást mégis meg tudok adni)
Miért nem fogad el még egy paramétert (azaz „véget”, amely alapértelmezés szerint a „\ n” jelzéshez, vagy egy bool zászlóhoz, keepnl = True), hogy kiválaszthassam a sorvégződések megtartását / módosítását, ha és csak akkor, ha szükségem van rá, meghaladja a megértésemet.
Ez az értelmetlen „politikai döntés” gyakorlatilag használhatatlanná teszi, és a lassú és nehezen érthető helyett:
lines = [ ln[:-1] for ln in f.readlines() ]
Általában
lines = f.read().split("\n")
Sokkal egyértelműbb a szemem számára. Azt hiszem, késő megváltoztatni.
Igen, az operációs rendszertől függően más sorvégződésekre is lehetőség van.
Gondolom, még a python szabványos lib-eknek is vannak hibái is.
Válasz
Ezek a karakterek nem extrák. Jelen vannak a szövegfájlban. Megjelölik a sorok végét.
Íme egy másik módszer a szöveges fájl elolvasására, amelynek neve: sample.txt
. Ez illusztrálja.
>>> 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"]
- A nyomtatott fájl minden sora a kimenet
\n
-vel végződik, mert ezek a szövegfájl soraiban voltak. - Jobb lenne, ha a következőt használná:
with
amikor megnyit egy fájlt, mert ez a konstrukció használat után bezárja a fájlokat. - Úgy veszem észre, hogy a fájlját
file
hívta. Kerülje a Python nyelv részét képező nevek használatát.
Ha olyan kódot szeretne, amely levonja az új sorokat, íme egy lehetőség:
>>> 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
Megjegyzés t kalapot használtam rstrip
, amely a szóköz karaktereit csak egy karakterlánc jobb széléről szünteti meg.