Seite 1 von 1

regex nicht ODER sondern UND

Verfasst: Montag 23. November 2015, 07:40
von mutetella
Ich habe eine Liste. Jedes Element dieser Liste möchte ich beim Komma oder Leerzeichen splitten:

Code: Alles auswählen

>>> values = ['1,2', '3 4', '5, 6', '7,8 ', '9, 10,']
>>> [single for raw in values for single in re.split(r'\s|,', raw)]
['1', '2', '3', '4', '5', '', '6', '7', '8', '', '9', '', '10', '']
Nun möchte ich aber, dass ein Separator, der auf einen Separator folgt, also ', ' ebenfalls konsumiert wird und auch ein am Ende stehender Separator nicht beachtet wird. Ich hab' das so gelöst...

Code: Alles auswählen

>>> [single for raw in values for single in re.split(r'\s|,', raw) if single]
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
... hätte das ``... if single]`` aber gerne in die regex integriert. Ist das möglich?

Re: regex nicht ODER sondern UND

Verfasst: Montag 23. November 2015, 07:44
von Sirius3
Dazu mußt Du die Suche umdrehen, nicht splitten sonder finden:

Code: Alles auswählen

[single for raw in values for single in re.findall('[^\s,]+', raw)]

Re: regex nicht ODER sondern UND

Verfasst: Montag 23. November 2015, 16:22
von mutetella
Danke!