2012-05-01 11 views
11

Uso espressioni regolari per dividere una stringa utilizzando più delimitatori. Ma se due dei miei delimitatori si verificano uno accanto all'altro nella stringa, inserisce una stringa vuota nell'elenco risultante. Per esempio:Suddivisione di una stringa con delimitatori multipli in Python

re.split(',|;', "This,is;a,;string") 

Risultati in

['This', 'is', 'a', '', 'string'] 

C'è un modo per evitare di ottenere '' nella mia lista senza aggiungere ,; come delimitatore?

risposta

30

Prova questa:

import re 
re.split(r'[,;]+', 'This,is;a,;string') 
> ['This', 'is', 'a', 'string'] 
+0

Hmm, ok. E se uno dei miei delimitatori fosse anche una parola? Ad esempio: 're.split (', |; | string'," This, is; a,; string ")' –

+2

Quindi funzionerebbe: 're.split (r '[,;] + | string', 'This, is; a,; string') ' –

+1

Ora l'output sarebbe' ['This', 'is', 'a', '', ''] ' –