2012-05-01 27 views
11

Estoy usando expresiones regulares para dividir una cadena usando múltiples delimitadores. Pero si dos de mis delimitadores aparecen uno al lado del otro en la cadena, pone una cadena vacía en la lista resultante. Por ejemplo:División de una cadena con múltiples delimitadores en Python

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

Resultados en

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

¿Hay alguna manera de evitar que '' en mi lista sin añadir ,; como delimitador?

Respuesta

30

Prueba esto:

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

Hmm, está bien. ¿Y si uno de mis delimitadores fuera también una palabra? Por ejemplo: 're.split (', |; | string'," This, is; a,; string ")' –

+2

Entonces esto funcionaría: 're.split (r '[,;] + | string', 'This, is; a,; string') ' –

+1

Ahora la salida sería' ['This', 'is', 'a', '', ''] ' –

Cuestiones relacionadas