Seite 1 von 1
Regular expression aus Listenelementen erstellen...
Verfasst: Donnerstag 22. November 2012, 21:34
von mutetella
Hallo,
ich konnte bisher keine brauchbare Lösung für folgendes finden:
Das pattern möchte ich dann zum Splitten eines Strings via 're.split' verwenden.
Ich dachte schon, dass mir 're.template' weiterhilft, allerdings konnte ich keine doc dazu finden und offensichtlich ist diese Funktion noch experimental (warum wird sie aber dann "mitgeliefert"?).
Ich kann nicht glauben, dass es keine geschmeidigere Lösung als dieses Stringgebastel gibt um aus einer Liste bestehend aus Strings ein pattern zu erstellen...
mutetella
Re: Regular expression aus Listenelementen erstellen...
Verfasst: Freitag 23. November 2012, 01:35
von jbs
Ich verstehe nicht, was du das vor hast. Wie soll dein Pattern aussehen und wo kommen welche Strings vor?
Aber wenn ich mal raten soll: Du möchtest einen String mittels einer Menge von Zeichen splitten, die du in einer Liste definiert hast. Was spricht denn dagegen, eine helper-function zu definieren?
Code: Alles auswählen
def splitby(s, *patterns):
regex = '|'.join(map(re.escape, patterns))
return re.split(regex, s)
Rawstrings helfen dir übrigens nicht für Reguläre Ausdrücke, sonder sind dazu da Python-Strings zu escapen (i.e. `\`).
Re: Regular expression aus Listenelementen erstellen...
Verfasst: Freitag 23. November 2012, 01:55
von cofi
jbs hat geschrieben:Rawstrings helfen dir übrigens nicht für Reguläre Ausdrücke, sonder sind dazu da Python-Strings zu escapen (i.e. `\`).
Wenn die RE Gruppen enthalten, helfen sie ungemein

Aber in allen gezeigten Literalen sind sie absolut ueberfluessig, da hast du recht.
Re: Regular expression aus Listenelementen erstellen...
Verfasst: Freitag 23. November 2012, 09:49
von mutetella
jbs hat geschrieben:Ich verstehe nicht, was du das vor hast. Wie soll dein Pattern aussehen und wo kommen welche Strings vor?
Eines vorweg: Deine Lösung funktioniert prächtig, ich dachte nur, dass die regex anderst aussehen muss.
Ich möchte strings an Punkt, Komma und Schrägstrich splitten und wollte dafür das Set [.,/] als regex verwenden. Nachdem ja zumindest der Punkt escaped werden sollte, habe ich rawstrings verwendet (ok, gerade hab' ich auch gelesen, dass das innerhalb von einem Set nicht nötig ist

)
Das ist, was ich vor hatte...
Um aber nochmal darauf zurückzukommen: Wenn ich ein Set oder eine Gruppe aus Strings erzeugen möchte muss ich die metacharacters "händisch" davor, dahinter oder wo auch immer einfügen?
mutetella
Re: Regular expression aus Listenelementen erstellen...
Verfasst: Freitag 23. November 2012, 12:22
von jbs
@cofi: Ja, da habe ich mich ungenau ausgedrückt.
@mutetella: Verwende doch format-Strings. ``"[%s]" %",".join(elements)``
Re: Regular expression aus Listenelementen erstellen...
Verfasst: Freitag 23. November 2012, 12:59
von mutetella
@jbs
Ich dachte halt, dass es vielleicht irgendwo in den Tiefen eine Funktion gibt, die mir ein re-Pattern aus übergebenen strings erstellt und dabei eben diese ganze Bastelarbeit übernimmt. Aber wenn ich so darüber nachdenke kann es eine solche Funktion fast nicht geben...
mutetella