Chcę podzielić ciąg na dowolną kombinację dostarczonych ograniczników. Na przykład, jeśli ciąg jest:Jak podzielić łańcuch na wiele ograniczników, ale przechwytuje tylko niektóre?
s = 'This, I think,., کباب MAKES , some sense '
I separatory są \.
, ,
i \s
. Jednak chcę przechwycić wszystkie ograniczniki z wyjątkiem spacji \s
. Wyjście powinno być:
['This', ',', 'I', 'think', ',.,', 'کباب', 'MAKES', ',', 'some', 'sense']
Moje rozwiązanie do tej pory jest za pomocą modułu re
:
pattern = '([\.,\s]+)'
re.split(pattern, s)
Jednak ten rejestruje odstępy, jak również. Próbowałem używać innych wzorców, takich jak [(\.)(,)\s]+
, ale one nie działają.
Edytuj: @PadraicCunningham dokonał wnikliwej obserwacji. W przypadku ograniczników takich jak Some text ,. , some more text
, chciałbym tylko usunąć początkowe i końcowe spacje z ,. ,
, a nie białe spacje wewnątrz.
można po prostu usunąć ' \ s' początkowo? – eavidan
Co powiesz na usunięcie białych znaków z ciągów wynikowych z przechwyconego wyniku? Nie jest to uogólnione rozwiązanie problemu i powinno "działać" tutaj ze względu na prosty charakter regex. – user2864740
@eavidan Ale wtedy nie dzieli się na białe znaki. W ten sposób musiałbym uruchomić 're.split ('\ s', ...)' na każdym elemencie zwróconej listy z pierwszego podziału. – hazrmard