La expresión regular de Python divide una cadena por uno de dos delimitadores

Quería cortar una serie de direcciones de correo electrónico que pueden estar separadas por cualquier combinación de comas y espacios en blanco.

Y pensé que sería bastante sencillo:

sep = re.compile('(\s*,*)+') print sep.split("""a@b.com, c@d.com e@f.com,,g@h.com""") 

Pero no lo es. No puedo encontrar una expresión regular que no deje algunas ranuras vacías como esta:

 ['a@b.com', '', 'c@d.com', '', 'e@f.com', '', 'g@h.com'] 

He probado varias combinaciones, pero ninguna parece funcionar. ¿Es esto, de hecho, posible, con expresiones regulares?

Doh!

Es solo esto

 sep = re.compile('[\s,]+') 

sin re

 line = 'e@d , f@g, 7@g' addresses = line.split(',') addresses = [ address.strip() for address in addresses ] 

Me gusta lo siguiente …

 >>> sep= re.compile( r',*\s*' ) >>> sep.split("""a@b.com, c@d.com e@f.com,,g@h.com""") ['a@b.com', 'c@d.com', 'e@f.com', 'g@h.com'] 

Lo que también parece funcionar en tus datos de prueba.