Aus File, letzte Line, letzten String lesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
rennmaus
User
Beiträge: 99
Registriert: Dienstag 4. August 2020, 10:24

Montag 12. Oktober 2020, 20:18

Hallo zusammen,
Meine Frage: Wie könnte man aus einer anderen File die letzte Linie und den letzten String lesen? Also ich habe ein Dokument da steht was drin, z.B.:

"Hallo du da,
Hallo du,
Hallo da"

Und jetzt soll von der letzten Zeile ("Hallo da") das da gelesen werden und als Variable abgespeichert werden, sodass es dann so wäre, wenn es in einem und dem gleichen File steht " letzte_Zeile='da'

Mfg
Christian
Benutzeravatar
sparrow
User
Beiträge: 2244
Registriert: Freitag 17. April 2009, 10:28

Montag 12. Oktober 2020, 20:43

"wenn es in einem und dem gleichen File steht" verstehe ich nicht.

Du musst deine Aufgabe in Teilaufgaben unterteilen und die nacheinander abarbeiten.
Im ersten Schritt musst du die letzte Zeile finden. Zum Beispiel indem du über die Zeilen iterierst und jede Zeile in eine Variable speicherst, die du immer wieder überschreibst. So hast du dort am Ende die letzte Zeile drin stehen.
Anschließend kannst du dann auf der Zeichenkette dein Ziel suchen. Wobei die Frage ist, ob die Anführungszeichen auch gefunden werden sollen oder nicht.
rennmaus
User
Beiträge: 99
Registriert: Dienstag 4. August 2020, 10:24

Montag 12. Oktober 2020, 21:49

damit meine ich, wie wenn ich es als variable im Python Skript abspeichere.

könnte man das mit file.readline() machen? In meinen Zeilen steht immer so etwas: "2020-10-12/Beispiel/189.9" (Ohne Anführungszeichen). Davon soll jetzt die letzte Zeile gelesen werden, damit man nicht immer den Betrag eingeben muss.
Benutzeravatar
__blackjack__
User
Beiträge: 7024
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Dienstag 13. Oktober 2020, 00:17

@rennmaus: `readline()` ist eher exotisch. Dateiobjekte sind iterierbar über die Zeilen, man würde also einfach eine Schleife über das Dateiobjekt schreiben und hätte dann nach der Schleife die letzte Zeile an die Laufvariable gebunden. Achtung: Nicht den Sonderfall vergessen, dass die Datei leer sein könnte!

`more_itertools` ist ein externes Modul mit vielen praktischen Funktionen rund um iterierbare Objekte die nicht im `itertools`-Modul aus der Standardbibliothek abgedeckt sind. Da gehört auch eine `last()`-Funktion dazu, die das letzte Element eines iterierbaren Objekts liefert.
long long ago; /* in a galaxy far far away */
rennmaus
User
Beiträge: 99
Registriert: Dienstag 4. August 2020, 10:24

Samstag 17. Oktober 2020, 08:01

Ich habe ein bisschen rumprobiert, aber nichts gefunden. Trotzdem danke für eure Mühe!

Mfg
Christian
nezzcarth
User
Beiträge: 1101
Registriert: Samstag 16. April 2011, 12:47

Samstag 17. Oktober 2020, 09:30

Wenn du mit einer for-Schleife über eine Datei iterierst, ist die letzte Zeile an den Namen der Schleifenvariable gebunden ... Das Ergebnis musst du dann nur noch splitten und das letzte Element auswählen. Wie das geht, ist im offiziellen Python-Tutorial erklärt.
rennmaus
User
Beiträge: 99
Registriert: Dienstag 4. August 2020, 10:24

Samstag 17. Oktober 2020, 14:58

Ah OK... Datei itertieren, schaue mal was genau dss bedeutet, da ich eigentlich noch nicht mit itertools gearbeitet habe
Sirius3
User
Beiträge: 13036
Registriert: Sonntag 21. Oktober 2012, 17:20

Samstag 17. Oktober 2020, 15:22

Du brauchst auch nicht unbedingt `itertools`. Wie es geht, hat doch sparrow hier beschrieben.
rennmaus
User
Beiträge: 99
Registriert: Dienstag 4. August 2020, 10:24

Sonntag 18. Oktober 2020, 07:43

Also, ich bin jetzt so weit, dass ich das mit einer Schleife durchlaufen lasse, wie @sparrow schon gesagt hat aber ich weiß nicht genau wie ich die letzte Zahl, z.B. 34.5 vom rest trennen kann, da die Zahlen zwar immer am ende stehen, aber die Zeile unterschiedlich lang sein können. Außerdem kann die Zahl ja auch z.b. 340.5 heißen und wäre damit auch länger.

Mfg
Christian
ElektroBerry
User
Beiträge: 15
Registriert: Samstag 16. Mai 2020, 18:52

Sonntag 18. Oktober 2020, 08:06

https://www.python-lernen.de/methode-string-split.htm

Code: Alles auswählen

last_row = "2020-10-12/Beispiel/189.9"
print(last_row.split("/")[-1])
rennmaus
User
Beiträge: 99
Registriert: Dienstag 4. August 2020, 10:24

Sonntag 18. Oktober 2020, 08:22

Gute Idee! Danke!

Edit : Hat geklappt, danke ans Froum bzw. @sparrow, @Sirius3, @__blackjack __, @nezzcarth,@Elektroberry!
Antworten