En Python, ¿cómo puedo analizar una cadena numérica como "545.2222" a su valor flotante correspondiente, 542.2222? ¿O analizar la cadena "31" a un entero, 31?
Solo quiero saber cómo analizar una cadena flotante en un flotante y (por separado) una cadena int en un int.
Es bueno que pidas hacer esto por separado. Si los está mezclando, puede estar preparándose para problemas más tarde. La respuesta simple es:
"545.2222"
flotar:
>>> float("545.2222")
545.2222
"31"
a un entero:
>>> int("31")
31
Otras conversiones, int hacia y desde cadenas y literales:
Conversiones de varias bases, y debe conocer la base de antemano (10 es el valor predeterminado). Tenga en cuenta que puede prefijarlos con lo que Python espera para sus literales (ver a continuación) o eliminar el prefijo:
>>> int("0b11111", 2)
31
>>> int("11111", 2)
31
>>> int('0o37', 8)
31
>>> int('37', 8)
31
>>> int('0x1f', 16)
31
>>> int('1f', 16)
31
Si no conoce la base de antemano, pero sabe que tendrán el prefijo correcto, Python puede inferir esto si lo pasa 0
como base:
>>> int("0b11111", 0)
31
>>> int('0o37', 0)
31
>>> int('0x1f', 0)
31
Literales no decimales (es decir, enteros) de otras bases
Si su motivación es que su propio código represente claramente valores específicos codificados, sin embargo, es posible que no necesite convertir desde las bases; puede dejar que Python lo haga automáticamente con la sintaxis correcta.
Puede usar los prefijos apropos para obtener la conversión automática a enteros con los siguientes literales . Estos son válidos para Python 2 y 3:
Binario, prefijo 0b
>>> 0b11111
31
Octal, prefijo 0o
>>> 0o37
31
Hexadecimal, prefijo 0x
>>> 0x1f
31
Esto puede ser útil al describir indicadores binarios, permisos de archivo en código o valores hexadecimales para colores; por ejemplo, no tenga en cuenta las comillas:
>>> 0b10101 # binary flags
21
>>> 0o755 # read, write, execute perms for owner, read & ex for group & others
493
>>> 0xffffff # the color, white, max values for red, green, and blue
16777215
Hacer que los octals ambiguos de Python 2 sean compatibles con Python 3
Si ve un número entero que comienza con un 0, en Python 2, esta es una sintaxis octal (en desuso).
>>> 037
31
Es malo porque parece que el valor debería ser 37
. Entonces, en Python 3, ahora genera un SyntaxError
:
>>> 037
File "<stdin>", line 1
037
^
SyntaxError: invalid token
Convierta sus octals de Python 2 a octales que funcionen en 2 y 3 con el 0o
prefijo:
>>> 0o37
31
type(my_object)
. El resultado generalmente se puede llamar como una función para hacer la conversión. Por ejemplo, lostype(100)
resultadosint
, por lo que puede llamarint(my_object)
para intentar convertirmy_object
a un entero. Esto no siempre funciona, pero es una buena "primera suposición" cuando se codifica.