Beste Antwort
Weil es dumm ist. Ich kann mir keine nützliche Anwendung dieser -Funktion vorstellen und habe mich bemüht.
(Siehe Romains Antwort für Ein ernsthafter Ansatz für „Warum genau“, ich muss nur flammen 🙂 Ich kann jedoch einige Problemumgehungen bereitstellen.
Warum akzeptiert es keinen weiteren Parameter (dh „Ende“, der standardmäßig verwendet wird? auf „\ n“ oder ein Bool-Flag (keepnl = True), damit ich wählen kann, das Zeilenende beizubehalten / zu ändern, wenn und nur wenn ich eines benötige, geht dies über mein Verständnis hinaus.
Dies Eine unintuitive „politische Entscheidung“ macht sie praktisch unbrauchbar und anstelle der langsamen und schwer zu verstehenden:
lines = [ ln[:-1] for ln in f.readlines() ]
bevorzuge ich normalerweise
lines = f.read().split("\n")
Für meine Augen viel einfacher. Ich denke, es ist zu spät, um es jetzt zu ändern.
Ja, es gibt die Möglichkeit anderer Zeilenenden, abhängig vom Betriebssystem.
Ich denke, sogar Python-Standardbibliotheken haben ihre Fehler
Antwort
Diese Zeichen sind nicht Extras. Sie sind in der Textdatei vorhanden. Sie markieren die Zeilenenden.
Hier ist eine andere Möglichkeit, eine Textdatei mit dem Namen sample.txt
zu lesen, die dies veranschaulicht.
>>> 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"]
- Jede Zeile im Druck Die Ausgabe endet mit
\n
, da sich diese in den Zeilen der Textdatei befanden. - Verwenden Sie besser
with
Wenn Sie eine Datei öffnen, weil dieses Konstrukt das Schließen von Dateien nach der Verwendung veranlasst. - Ich stelle fest, dass Sie Ihre Datei
file
aufgerufen haben. Sie sollten die Verwendung von Namen vermeiden, die Teil der Python-Sprache sind.
Wenn Sie Code möchten, der die neuen Zeilen entfernt, gibt es eine Option:
>>> 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
Hinweis t Ich habe rstrip
verwendet, wodurch Leerzeichen nur am rechten Ende einer Zeichenfolge entfernt werden.