Wie zum extrahieren der letzten Zeile der text in Python (ohne neue Linien)?
Textdatei:
1
2
3
4
5
6
\n
\n
Ich weiß lines[-1]
bekommt Sie die Letzte Zeile, aber ich will ignorieren Sie keine neuen Zeilen und die Letzte Zeile des Textes (6 in diesem Fall).
Hat deine Datei enthalten genau die zwei mit Zeilenumbruch?
Nein, ich will ignorieren Sie eine beliebige Anzahl von neuen Linien
Nein, ich will ignorieren Sie eine beliebige Anzahl von neuen Linien
InformationsquelleAutor user1224478 | 2015-03-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lesen Sie die gesamte Datei und dann teilen Sie die gelesenen Datei nach dem newline-Zeichen, und erstellen Sie eine Liste der nicht-leeren Elemente. Drucken Sie dann das Letzte element aus der Liste.
yep, in diesem Fall ist das nicht das richtige. Aber für kleinere Dateien, es wäre zu schnell, da im Vergleich zu anderen.
InformationsquelleAutor Avinash Raj
Ist der beste Ansatz in Bezug auf Speicher zu erschöpfen-Datei. So etwas wie dieses:
Es kann getan werden, mehr aus obwohl. Einen etwas anderen Ansatz:
O(n)
Lösung. Können wir weiter optimieren?Vielleicht können Sie behandeln die Datei als binary, und versuchen, ein Stück vom Ende der Datei sehen, ob es enthält einen Zeilenumbruch, etc. Es ist immer noch O(n), aber der Durchschnittliche Fall besser wäre
InformationsquelleAutor bgusach
Für eine kleine Datei können Sie Lesen, einfach alle Zeilen, wobei jede leere. Beachten Sie, dass ich verwendet habe, eine innere generator isolieren Sie die Leitungen vor dem Ausschluss in den äußeren.
OP erwähnt 6 Zeilen und ich qualifizierte diese Antwort als geeignet für kleine Dateien. Eine etwas komplizierte Lösung, wo zum Beispiel der Schwanz ist gelesen und gescannt, um die Letzte Zeile (mit einem fallback, um mehr zu Lesen) ist, einfach nicht genannt, der mit kleinen Dateien.
InformationsquelleAutor tdelaney
Dies ist nur ein edit, um Avinash Raj ' s Antwort (bin mir da aber einen neuen account kann ich nicht kommentieren). Dies wird bewahren Sie alle Keine Werte in Ihren Daten gibt (d.h., wenn die Daten in der letzten Zeile ist "None", es wird funktionieren, aber je nach input kann dies nicht ein Problem sein).
InformationsquelleAutor Keyboard Frenzy
Druckt
6
mit einem Zeilenumbruch am Ende. Sie können entscheiden, wie Sie Streifen. Im folgenden sind einige Optionen:answer.rstrip('\n')
entfernt nachfolgende Zeilenumbrücheanswer.rstrip()
entfernt nachgestellte Leerzeichenanswer.strip()
entfernt alle umgebenden LeerzeichenInformationsquelleAutor inspectorG4dget
InformationsquelleAutor indu