regex nicht ODER sondern UND

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

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?
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

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)]
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

Danke!
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
Antworten