Daten extrahieren

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
THE_PYTHON_GUY
User
Beiträge: 18
Registriert: Samstag 6. November 2021, 09:58

Hallo,

wie kann ich wenn ich z.B. den String x="Mein Name ist Peter, ciao" habe nur den teil zwischen ist und ciao speichern?
Ich weiß es macht bei diesem Beispiel kein Sinn.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Je nachdem was du genau brauchst könnte das gut ein Fall für Regular Expressions sein.

Es kann dir allerdings gerade als Anfänger durchaus passieren, dass du dich wie bei dem alten Spruch fühlst: "Ich hatte ein Problem. Dann verwendete ich reguläre Ausdrücke. Jetzt habe ich zwei Probleme."
rogerb
User
Beiträge: 878
Registriert: Dienstag 26. November 2019, 23:24

@THE_PYTHON_GUY,

so etwas kann man zum Beispiel über regex machen. Man muss sich zunächst eine allgemeingültige Regel überlegen.
Die Regel "...teil zwischen ist und ciao..." kann man nur als allgemeingültige Regel verwenden, wenn es wirklich immer ein "ist" und ein "ciao" gibt und man wirklich *alles* dazwischen haben will.
Mal angenommen es wäre so, dann würde das folgende funktionieren. Für einen anderen Fall muss man es halt anpassen.

Code: Alles auswählen

import re

test_str = "Mein Name ist Peter, ciao"

regex = r"ist(?P<name>.*)ciao"
matches = re.search(regex, test_str)

result = matches.groupdict()["name"]

print(result)
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@rogerb: Warum der Umweg über `groupdict()`? ``matches["name"]`` wäre kürzer und falls da intern nicht schon ein Wörterbuch vorgehalten wird, braucht das nicht extra erstellt zu werden.

@THE_PYTHON_GUY: Für einfache Fälle gibt es auch das externe `parse`-Modul, das sozusagen als Gegenstück zu `format()` funktioniert (und im Hintergrund einen regulären Ausdruck für die Suchvorlage bastelt und verwendet):

Code: Alles auswählen

In [126]: import parse                                                          

In [127]: text = "Mein Name ist Peter, ciao."                                   

In [128]: match = parse.parse("Mein Name ist {name}, ciao.", text)              

In [129]: match["name"]                                                         
Out[129]: 'Peter'

In [130]: match = parse.search("ist {name}, ciao", text)                        

In [131]: match["name"]                                                         
Out[131]: 'Peter'
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten