Comportamiento extraño de la función de tira de Python

Posible duplicado:
python str.strip comportamiento extraño

Tengo el siguiente código:

st = '55000.0' st = st.strip('.0') print st 

Cuando ejecuto, imprime solo 55 pero espero que se imprima 55000 . Pensé que el dot en la strip causaba esto, ya que usualmente lo evitamos en Regular Expression así que también probé st = st.strip('\.0') pero aún así st = st.strip('\.0') dando los mismos resultados. ¿Alguna idea de por qué no es solo striping .0 y por qué todos los ceros se rayan?

Has entendido mal la tira (): elimina cualquiera de los caracteres especificados de ambos extremos; No hay soporte de expresiones regulares aquí.

Lo estás pidiendo que te quite los dos . y 0 en ambos extremos, por lo que lo hace – y se queda con 55 .

Ver los documentos oficiales de la clase String para más detalles.

Porque le está diciendo que elimine todos los puntos y 0s, por lo que sigue subiendo hasta el primer carácter sin período, sin 0.

Strip utiliza una lista de caracteres, no una configuración específica de ellos.

Intenta algo como esto en su lugar:

 st.partition('.')[0] 

Vea la documentación en str.strip , la parte importante es:

El argumento chars no es un prefijo o sufijo; más bien, se eliminan todas las combinaciones de sus valores:

 >>> ' spacious '.strip() 'spacious' >>> 'www.example.com'.strip('cmowz.') 'example' 

Porque eso es lo strip hace la strip :

El argumento chars no es un prefijo o sufijo; más bien, se eliminan todas las combinaciones de sus valores.

Debido a que el argumento para strip es el conjunto de caracteres que se eliminarán, no la cadena que se eliminará. En otras palabras. Elimina cada carácter de los extremos de esa cadena que se encuentra en cualquier parte del conjunto, hasta que encuentra un carácter que no está en ese conjunto.

Trabajos de strip en caracteres individuales. Le dijiste que lo quitara todo. y ‘0’ caracteres, y eso es lo que hizo.

Consulte http://docs.python.org/library/stdtypes.html#string-formatting

Los argumentos de [caracteres] enumera el conjunto de caracteres que deben eliminarse de la cadena.

Para obtener el resultado deseado de 5500, use a.split('.0')[0]