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.
Daten extrahieren
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."
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."
@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.
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)
- __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):
@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