Ich möchte eine Zeichenfolge auf jede Kombination von Delimitern, die ich zur Verfügung stelle, aufteilen. Zum Beispiel, wenn die Zeichenfolge:Wie wird eine Zeichenkette auf mehrere Trennzeichen aufgeteilt, aber nur einige?
s = 'This, I think,., کباب MAKES , some sense '
Und die Trennzeichen sind \.
, ,
und \s
. Ich möchte jedoch alle Trennzeichen außer Whitespace \s
erfassen. Die Ausgabe sollte sein:
['This', ',', 'I', 'think', ',.,', 'کباب', 'MAKES', ',', 'some', 'sense']
Meine Lösung so weit ist, wird mit dem re
Modul:
pattern = '([\.,\s]+)'
re.split(pattern, s)
Dies ist jedoch fängt Leerzeichen als auch. Ich habe versucht, andere Muster wie [(\.)(,)\s]+
zu verwenden, aber sie funktionieren nicht.
Bearbeiten: @PadraicCunningham machte eine kluge Beobachtung. Für Delimiter wie Some text ,. , some more text
, ich möchte nur führende und nachfolgende Leerzeichen aus ,. ,
und nicht Whitespace innerhalb entfernen.
Könnten Sie das Entfernen ' \ 's zunächst? – eavidan
Was ist mit dem Entfernen der Leerzeichen aus Strings, die sich aus dem aufgenommenen Ergebnis ergeben? Dies ist keine verallgemeinerte Lösung des Problems und sollte aufgrund der Einfachheit der Regex "funktionieren". – user2864740
@eavidan Aber dann teilt es sich nicht auf Whitespace. Auf diese Weise müsste ich 're.split ('\ s', ...)' auf jedem Element der zurückgegebenen Liste ab dem ersten Split ausführen. – hazrmard