Python String in mehrere Unterstrings trennen

tobi.wld

Lt. Junior Grade
Registriert
Dez. 2020
Beiträge
270
Hi zusammen,
ich arbeite derzeit an einem kleinen Projekt und komme dabei an einem Punkt nicht weiter.

Und zwar muss ich einen String verändern. Folgender String als Beispiel:

"FF TesthausenFF MusterstadtKreisbrandinspektionILS Lagedienst"
soll zu folgendem werden:
"FF Testhausen, FF Musterstadt, Kreisbrandinspektion, ILS Lagedienst"

Es ist immer mindestens ein "FF XXXXXX" im String vorhanden. "Kreisbrandinspektion" sowie "ILS Lagedienst" kommen hingegen nur manchmal vor.


Theoretisch müsste ich ja immer vor einem FF, Kreisbrandinspektion oder ILS Lagedienst ", " setzen, außer beim ersten. Allerdings stehe ich gerade vollkommen auf dem Schlauch wie ich das umsetzen kann ^^
 
Python:
import re
a = "FF TesthausenFF MusterstadtKreisbrandinspektionILS Lagedienst"
b = ", ".join(re.match("(FF.*?)(FF.*?)(Kreisbrandinspektion)(ILS Lagedienst)", a).groups())
print(b)  # 'FF Testhausen, FF Musterstadt, Kreisbrandinspektion, ILS Lagedienst'
 
  • Gefällt mir
Reaktionen: madmax2010
Warum zwei Mal (FF.*?)? Der RegEx ergibt doch keinen Sinn so, oder irre ich mich?
Edit:
Sollte der Regex nicht in die Richtung gehen?
Code:
((FF.*?)|(Kreisbrandinspektion)|(ILS Lagedienst))*
 
? für non-greedy, geht mit den gruppen aber auch ohne.
 
  • Gefällt mir
Reaktionen: madmax2010
Also wenn die Reihenfolge fest ist, aber zur Reihenfolge wurde nichts gesagt, ich würde da einfach mal vom Worst-Case ausgehen...
 
Mein Fehler, das du das Wort "Richtung" nicht verstehst...

Kein Problem, ich erkläre es dir in dem Kontext.
Wenn jemand sagt, dass etwas in eine Richtung gehen sollte, dann hat diese Aussage keinen Anspruch darauf, dass es die fertige Lösung ist. Viel mehr stellt es eine Art Idee, Denkanstoß, ... dar.

Also es hat nicht die Bedeutung von:
  • Korrekt wäre [...]
  • Es muss so sein: [...]
  • Das ist die Lösung: [...]

Die Liste hat keinen Anspruch auf Vollständigkeit, nur um auf Nummer sicher zu gehen.


Edit:
Eine ganz naive Methode wäre es, alles mit dem Komma zu ersetzen und dann vom Ergebnis nur den Substring ab Position 2 zu nehmen, wenn er mit ", " beginnt.

Edit2:
Und es steht ja nur "Es ist mindestens ein FF im String vorhanden", es steht aber nicht da, dass die FFs immer vor dem Rest kommen usw...
 
Zuletzt bearbeitet:
Zurück
Oben