Ich habe eine Liste der möglichen Trennzeichen. Ich verarbeite einige tausend Zeichenfolgen und muss alles entfernen, nachdem eines der Trennzeichen gefunden wurde. Hinweis: Es wird nie einen Fall geben, wenn mehr als 1 Trennzeichen in der Zeichenfolge enthalten ist.Strip alles nach der Liste der möglichen Trennzeichen ohne Regex
Beispiel:
patterns = ['abc', 'def']
example_string = 'hello world abc 123'
example_string
Wenn der Eingang ist in diesem Fall, sollte der Ausgang hello world abc
sein.
Ich benutze derzeit Regex für die Lösung, die funktioniert, aber ich möchte einen Ansatz verwenden, der Regex nicht verwendet. Hier ist meine aktuelle Implementierung:
regex = r'(.*)(' + '|'.join(patterns) + r')(.*)'
example_string= re.sub(regex, r'\1\2', example_string).lstrip()
ich etwas entlang der Linien des Suchens denke, um zu sehen, wenn eine der Begrenzungszeichen von Mustern in der Zeichenfolge ist und dann die Indizierung die Zeichenfolge aus der Position der Länge des Trennzeichens, bis die Ende der Zeichenfolge.
Ich weiß nicht genau, ob das ein guter Weg wäre, das zu implementieren, oder ob das funktionieren würde.
Ungefähr wie viele Zeichenfolgen sind in "Mustern"? Sind sie alle gleich lang? –
Es gibt 28 Zeichenfolgen in Mustern, die sich jedoch im Laufe der Zeit ändern können. Und nein, die Längen der Saiten variieren. – Harrison
In diesem Fall wird Ihr Regex-basierter Ansatz wahrscheinlich besser sein als jede Nicht-Regex-Lösung. –