No Python, como posso analisar uma sequência numérica como "545.2222" em seu valor flutuante correspondente, 542.2222? Ou analise a sequência "31" para um número inteiro, 31?
Eu só quero saber como analisar uma seqüência de caracteres flutuante em um ponto flutuante e (separadamente) uma seqüência de caracteres int para um int.
É bom que você peça para fazer isso separadamente. Se você as estiver misturando, pode estar se preparando para problemas mais tarde. A resposta simples é:
"545.2222"
flutuar:
>>> float("545.2222")
545.2222
"31"
para um número inteiro:
>>> int("31")
31
Outras conversões, ints de e para strings e literais:
Conversões de várias bases, e você deve conhecer a base com antecedência (10 é o padrão). Observe que você pode prefixá-los com o que o Python espera para seus literais (veja abaixo) ou remover o prefixo:
>>> int("0b11111", 2)
31
>>> int("11111", 2)
31
>>> int('0o37', 8)
31
>>> int('37', 8)
31
>>> int('0x1f', 16)
31
>>> int('1f', 16)
31
Se você não conhece a base com antecedência, mas sabe que eles terão o prefixo correto, o Python pode inferir isso para você se você passar 0
como base:
>>> int("0b11111", 0)
31
>>> int('0o37', 0)
31
>>> int('0x1f', 0)
31
Literais não decimais (ou seja, número inteiro) de outras bases
Se sua motivação é ter seu próprio código claramente representando valores específicos codificados, no entanto, talvez você não precise converter a partir das bases - você pode deixar o Python fazer isso por você automaticamente com a sintaxe correta.
Você pode usar os prefixos apropos para obter a conversão automática em números inteiros com os seguintes literais . Estes são válidos para Python 2 e 3:
Prefixo binário 0b
>>> 0b11111
31
Octal, prefixo 0o
>>> 0o37
31
Hexadecimal, prefixo 0x
>>> 0x1f
31
Isso pode ser útil ao descrever sinalizadores binários, permissões de arquivo no código ou valores hexadecimais para cores - por exemplo, observe sem aspas:
>>> 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
Tornando octais ambíguos do Python 2 compatíveis com o Python 3
Se você vir um número inteiro que começa com 0, no Python 2, essa é a sintaxe octal (obsoleta).
>>> 037
31
É ruim porque parece que o valor deveria ser 37
. Portanto, no Python 3, agora gera um SyntaxError
:
>>> 037
File "<stdin>", line 1
037
^
SyntaxError: invalid token
Converta seus octais do Python 2 em octais que funcionam em 2 e 3 com o 0o
prefixo:
>>> 0o37
31
type(my_object)
-o. O resultado geralmente pode ser chamado como uma função para fazer a conversão. Por exemplo,type(100)
resulta emint
, então você pode ligarint(my_object)
para tentar convertermy_object
em um número inteiro. Isso nem sempre funciona, mas é um bom "primeiro palpite" ao codificar.