2011-04-21 27 views

Respuesta

13

Para tener en cuenta algunas de las otras respuestas, tiene las siguientes opciones:

Si sabe que la cadena tendrá un símbolo '@' en él, entonces se puede hacer simplemente lo siguiente:

>>> domain = a.split('@')[1] 

Si hay una posibilidad de que usted no tiene un símbolo '@', entonces uno de los siguientes se sugiere:

>>> domain = a.partition('@')[2] 

O

try: 
    domain = a.split('@')[1] 
except IndexError: 
    print "Oops! No @ symbols exist!" 
+0

Hay una razón por la división y la partición ambos existen. A veces, la división es lo correcto para usar, pero este no es uno de esos momentos. –

+0

¿Puede explicar cuándo usar división y cuándo usar la partición? – john

4

Si sabe siempre hay una @ en la cadena, domain = a.split('@')[1] es el camino a seguir. De lo contrario, verifíquelo primero o agregue un bloque try..except IndexError en él.

+1

También podría considerar 'domain = a.partition ('@') [2]'. Esto establecerá 'domain' en' '' 'si no hay' @ 'en la cadena, y también solo se dividirá en el primer' @ 'si hay más de uno. –

2

Esto podría funcionar:

domain = a[a.index("@") + 1:] 
6

Usted podría utilizar su propio estilo de codificación y especificar algo como "utilización '_' como no les importa para las variables cuyo valor desea ignorar". Esta es una práctica general en otros lenguajes como Erlang.

Entonces, usted podría hacer:

uname, _ = a.split('@') 

Y de acuerdo con las reglas que se propuso, el valor de la variable _ se va a ignorar. Siempre y cuando apliques la regla de manera consistente, deberías estar bien.

+0

Este uso de '_' en realidad está bastante bien establecido, consulte [¿Cuál es el propósito de la variable de subrayado único" _ "en Python?] (Http://stackoverflow.com/q/5893163/699305). – alexis

4

Esto le da una cadena vacía si no hay @:

>>> domain = a.partition('@')[2] 

Si desea obtener la cadena original de nuevo cuando no hay @, utilice esto:

>>> domain = a.rpartition('@')[2] 
Cuestiones relacionadas