2013-06-04 14 views

risposta

12

Se il vostro modello è abbastanza semplice per uno (o forse due) replace, lo usano :

mystr.replace('-', ' ').split(' ') 

in caso contrario, l'uso RE come suggerito da @jamylak.

14
>>> import re 
>>> text = "You think we did this un-thinkingly?" 
>>> re.split(r'\s|-', text) 
['You', 'think', 'we', 'did', 'this', 'un', 'thinkingly?'] 

Come osservato @larsmans, al raggruppati per spazi multipli/trattini (emulando .split() senza argomenti) utilizzati per migliorare la leggibilità [...]:

>>> re.split(r'[\s-]+', text) 
['You', 'think', 'we', 'did', 'this', 'un', 'thinkingly?'] 

Senza regex (regex è l'opzione più semplice in questo caso):

>>> [y for x in text.split() for y in x.split('-')] 
['You', 'think', 'we', 'did', 'this', 'un', 'thinkingly?'] 

in realtà la risposta @Elazar senza espressione regolare è abbastanza semplice e (vorrei ancora garantire per rege x però)

+0

Penso che le regex siano migliori per il caso generale (qualsiasi trattino, ad esempio) dove 'replace' è migliore per i casi più semplici. – Elazar

+0

E ti suggerisco di incorporare la mia risposta nella tua e la rimuoverò. così il lettore avrà un quadro completo. – Elazar

+0

@Elazar yes 'replace' potrebbe diventare disordinato dopo più di uno, funziona perfettamente qui però. Non voglio incorporare la tua risposta, ti meriti i voti per questo – jamylak

1

Un'espressione regolare è molto più facile e meglio, ma se siete fermamente contrari a utilizzando uno:

import itertools 

itertools.chain.from_iterable((i.split(" ") for i in myStr.split("-"))) 
Problemi correlati