2011-06-02 14 views
5

tengo una cadena:Parse cadena pequeña para nombre y correo electrónico?

John Smith <[email protected]>

me gustaría obtener dos variables:

nombre (John Smith) y correo electrónico ([email protected])

¿Cómo podría yo hacer ¿ese?

¡Gracias por la ayuda!

+3

¿Qué tienes hasta el momento, y cómo no funcionará? –

+0

es el formato SIEMPRE en esa misma estructura? – tMC

+2

... y ¿por qué está etiquetado con [RegEx]? 'split()' y 'strip()' son todo lo que necesitas! – Johnsyweb

Respuesta

17

Hay más formas válidas de correo electrónico de Internet de las que probablemente se dé cuenta. Sugeriría usar el código de otra persona para analizarlos, como email.utils.parseaddr.

Por ejemplo, la siguiente es una dirección válida:

"Rocky J. Squirrel" <[email protected]> 

Aquí, el nombre es Rocky J. Squirrel, no "Rocky J. Squirrel".

El siguiente es también la sintaxis legal y muestra regularmente en las cabeceras de correo (nota la falta de <> delimitadores):

[email protected] (Rocky J. Squirrel) 

Aunque la parte de parens es técnicamente sólo un "comentario", la mayoría de los clientes de correo interpretan como el nombre del usuario. (. Y lo mismo ocurre con email.utils.parseaddr de Python)

Para hacer realidad el análisis sintáctico (que le ahorra lectura de la documentación):

>>> import email.utils 
>>> email.utils.parseaddr("John Smith <[email protected]>") 
('John Smith', '[email protected]') 
Cuestiones relacionadas