Método de la tira de Python

Hoy en la terminal de python, probé

a = "serviceCheck_postmaster" a.strip("serviceCheck_") 

Pero en lugar de obtener "postmaster" , tengo "postmast" .

Que podria causar esto? ¿Y cómo puedo obtener "postmaster" como salida?

Estás malinterpretando lo que hace .strip() . Elimina cualquiera de los caracteres que se encuentran en la cadena que pasas. De la documentación de str.strip() :

El argumento chars es una cadena que especifica el conjunto de caracteres que se eliminarán.

énfasis mio La palabra set allí es crucial.

Como los chars se tratan como un conjunto, .strip() eliminará todos los caracteres s , e , r , v , i , c , C , h , k y _ del principio y final de la cadena de entrada. Así que los caracteres e y r del final de la cadena de entrada también fueron eliminados; Esos personajes son parte del conjunto.

Para eliminar una cadena desde el principio o el final, utilice el corte en su lugar:

 if a.startswith('serviceCheck_'): a = a[len('serviceCheck_'):] 

Una alternativa a la respuesta de Martijn sería utilizar str.replace()

 >>> a = "serviceCheck_postmaster" >>> a.replace('serviceCheck_','') 'postmaster' 

Si observas cuidadosamente la ayuda de la función de tira, dice así:

 Help on built-in function strip: strip(...) S.strip([chars]) -> string or unicode Return a copy of the string S with leading and trailing whitespace removed. If chars is given and not None, remove characters in chars instead. If chars is unicode, S will be converted to unicode before stripping 

Se eliminarán todos los caracteres y espacios en blanco iniciales y finales. En tu caso los conjuntos de caracteres son

 s, e, r, v, i, c, C, h, k and _ 

Puedes conseguir el postmaster por algo como esto

 a = "serviceCheck_postmaster" print a.split("_")[1] 

También puedes aislar “postmaster” con algo como esto:

 a = "serviceCheck_postmaster" b = a.split("_")[1] # split on underscore and take second item 

Tira eliminará toda la letra que ingreses en su función. Entonces, por la razón por la cual las letras ‘e’ y ‘r’ fueron despojadas de postmaster. Intente: a = impresión “serviceCheck_postmaster” (a [13:])