Bestimmten String suchen... Welche möglichkeiten gibt es?

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
Peziman
User
Beiträge: 7
Registriert: Mittwoch 9. Januar 2019, 10:58

Hallo Forum!

Ich stelle mir die Frage welche Möglichkeiten es gibt einen bestimmten Text in einer Textdatei zusuchen und einen Teil in eine Variable zu speichern.

Nehmen wir mal an ich habe folgenden Inhalt....

Code: Alles auswählen

Vorname: Max
Nachname: Mustermann
Ich möchte nun den Vornamen Max als String in "vorname" speichen.

Bis jetzt habe ich das quasi folgendermaßen gemacht...

Code: Alles auswählen

if "Vorname:" in line:
	vorname = line[8:] 
Funktioniert zwar, aber kommt mir nicht so elegant vor wenn ich die Zeichen abzählen muss.
Da gibt es bessere Methoden oder?

lg Pezi

P.S. der Code oben ist eher ein Pseudocode :D
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wenn die Daten wirklich so sind, kannst du die `split` Methode des Strings `line` anwenden, dann brauchst du nicht abzählen.

Hast du wirklich eine platte Textdatei und nicht etwas strukturiertest, für das es zufällig schon einen fertigen Parser für Python gibt?

Gruß, noisefloor
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

Man kann auch den Computer zählen lassen:

Code: Alles auswählen

if line.startswith("Vorname:"):
    vorname = line[len("Vorname:"):]
Wenn die Datei aber so eine Struktur hat, würde man alles in ein Wörterbuch einlesen:

Code: Alles auswählen

data = {}
for line in lines:
    if ":" in line:
        key, value = line.split(":")
        data[key] = value
Peziman
User
Beiträge: 7
Registriert: Mittwoch 9. Januar 2019, 10:58

Ja das Format ist wirklich so platt. Es handelt sich um eine Log-datei von einem Steuergerät.


Aber danke schon mal für die beiden Tipps. Die sind definitiv eleganter als meine Lösung. 8)

@Sirius3
Auf die Möglichkeit eines Dictionary habe ich noch nicht gedacht. Aber würde deine Schleife nicht dazu führen, dass im Dictionary nur der zuletzt erkannte wert stehen würde, wenn der Key öfter vorkommt?
Benutzeravatar
noisefloor
User
Beiträge: 3853
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
Aber würde deine Schleife nicht dazu führen, dass im Dictionary nur der zuletzt erkannte wert stehen würde, wenn der Key öfter vorkommt?
Ja, würde es. Wenn du z.B. alle Vornamen sammeln willst, könntest du beim Dict die Werte in eine Liste packen.

Gruß, noisefloor
Sirius3
User
Beiträge: 17737
Registriert: Sonntag 21. Oktober 2012, 17:20

@Peziman: das ist halt das Problem, wenn man mit unpassenden Beispielen, statt des realen Szenarios kommt. Dann machst Du nur uns und Dir unnötige Arbeit, weil wir von falschen Vorraussetzungen ausgehen.
Peziman
User
Beiträge: 7
Registriert: Mittwoch 9. Januar 2019, 10:58

Wieso unpassend? Es passt doch alles!
Deine Beispiele funktionieren gut und sehen bei weitem besser aus als meine Variante.
Die Idee mit dem Dictionary und dem Hinweis von noisefloor macht sogar die Weiterverarbeitung leichter. Da ist doch alles gut... :D
Wäre ich mit der original Ausgabe gekommen, wäre eher woher und warum die Daten herkommen. Und ich weiß selbst dass der Aufbau dieser Text Datei mehr als doof ist. :mrgreen:
Antworten