2009-01-12 12 views

Respuesta

13
>>> s = 'Zaptoit:685158:[email protected]' 
>>> s.split(':', 1)[1] 
'685158:[email protected]' 
+2

Tenga en cuenta que en realidad no es una buena práctica utilizar el nombre de la variable "str", ya que str () es un built-in. – Jay

+0

Gracias Jay - He actualizado el código. –

0
s = re.sub('^.*?:', '', s) 
+0

^[^:] *: sería mejor –

+0

@PEZ: mejor deteniendo el partido en el primer ':' en vez del último – orip

+0

@orip: Creo que está equivocado, el signo de interrogación lo convierte en un no- partido codicioso que se detendrá en los primeros dos puntos, como se pretendía – Arkady

2

A partir de Python 2.5 hay una solución aún más directa. Se degrada muy bien si no se encuentra el separador:

>>> s = 'Zaptoit:685158:[email protected]' 
>>> s.partition(':') 
('Zaptoit', ':', '685158:[email protected]') 

>>> s.partition(':')[2] 
'685158:[email protected]' 

>>> s.partition(';') 
('Zaptoit:685158:[email protected]', '', '') 
+0

Esto es exactamente lo que estaba buscando. Sabía acerca de 'split()', pero no se había ejecutado en 'partition()' antes. ¡Gracias! –

0

Utilice el método str.split() con el valor del argumento como maxsplit 1.

mailID = 'Zaptoit:685158:[email protected]' 
mailID.split(':', 1)[1] 

espero que ayudó.

0

Después divide la cadena, ignora primer elemento y vuelve a unirse al resto:

":".join(x.split(":")[1:]) 

Salida:

'685158:[email protected]'