Se quiser converter uma cadeia de números para valores numéricos em Python, use int() para converter para inteiros e float() para converter para números de ponto flutuante.
O seguinte é explicado aqui, juntamente com o código da amostra.
- Utilização básica
- Converter cordas numéricas em números inteiros:
int()
- Converter uma sequência de números em números de ponto flutuante:
float()
- Converter cordas numéricas em números inteiros:
- Utilização especial
- Converte cordas em notação binária, octal, e hexadecimal para números
- Converte cordas em notação exponencial para valores numéricos
- Converter cadeias de numerais árabes de largura total em números
- Converter uma sequência de caracteres chineses em números
Para converter um valor numérico para uma cadeia, usar str().
Se quiser converter números ou strings para vários formatos, utilize a função format() ou o método string str.format(). Depois pode converter para 0-fill, binário, octal, hexadecimal, notação exponencial, etc. Ver o artigo seguinte para detalhes.
- RELACIONADO:Conversão de formato em Python, formato (preenchimento 0, notação exponencial, hexadecimal, etc.)
Também pode converter uma lista de cordas em uma lista de números. Ver o artigo seguinte para detalhes.
- Converter cordas numéricas em números inteiros: int()
- Converter uma sequência de números em números de ponto flutuante: float()
- Converte cordas em notação binária, octal, e hexadecimal para números
- Converte cordas em notação exponencial para valores numéricos
- Converter cadeias de numerais árabes de largura total em números
- Converter uma sequência de caracteres chineses em números
Converter cordas numéricas em números inteiros: int()
Pode usar int() para converter uma sequência de números em números inteiros.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Decimais, incluindo pontos decimais, e cordas separadas por vírgulas, resultarão num ValueError.
# print(int('1.23'))
# ValueError: invalid literal for int() with base 10: '1.23'
# print(int('10,000'))
# ValueError: invalid literal for int() with base 10: '10,000'
As cadeias delimitadas por vírgula podem ser convertidas removendo a vírgula (substituindo-a por uma cadeia vazia) usando o método substituir().
print(int('10,000'.replace(',', '')))
# 10000
Converter uma sequência de números em números de ponto flutuante: float()
Um float() pode ser utilizado para converter uma cadeia de números para um tipo de número de ponto flutuante.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
As cordas com a parte inteira omitida são convertidas complementando a parte inteira com 0.
print(float('.23'))
# 0.23
Cordas inteiras são também convertidas em números de ponto flutuante.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Converte cordas em notação binária, octal, e hexadecimal para números
Se um radix for especificado como segundo argumento para int(), a cadeia pode ser convertida para um int inteiro considerando-o como um int binário, octal, hexadecimal, etc.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Tal como nos exemplos anteriores, se omitido, o número é considerado como um número decimal.
print(int('100', 10))
print(int('100'))
# 100
# 100
Se o radix estiver definido em 0, a conversão é baseada no prefixo da corda. Ver abaixo os prefixos das cordas.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Os prefixos e alfabetos hexadecimais podem ser em maiúsculas ou minúsculas.
print(int('FF', 16))
print(int('ff', 16))
# 255
# 255
print(int('0xFF', 0))
print(int('0XFF', 0))
print(int('0xff', 0))
print(int('0Xff', 0))
# 255
# 255
# 255
# 255
Ver o artigo seguinte para informações sobre a interconversão dos números e cordas binárias, octais e hexadecimais.
Converte cordas em notação exponencial para valores numéricos
As cordas em notação exponencial podem ser convertidas directamente para tipo flutuante com flutuador().
print(float('1.23e-4'))
print(type(float('1.23e-4')))
# 0.000123
# <class 'float'>
print(float('1.23e4'))
print(type(float('1.23e4')))
# 12300.0
# <class 'float'>
As letras minúsculas e também podem ser capitalizadas E.
print(float('1.23E-4'))
# 0.000123
Converter cadeias de numerais árabes de largura total em números
Os números arábicos de largura total podem ser convertidos directamente em números por int() ou float().
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Contudo, se símbolos como menos e pontos decimais forem caracteres de largura total, será gerado um ValueError.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Os números podem ser convertidos sem problemas se forem caracteres de largura total, mas menos e pontos decimais são caracteres de meia largura. a conversão é possível através da substituição de símbolos de largura total por símbolos de meia largura usando o método de substituição().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Converter uma sequência de caracteres chineses em números
A função unicodedata.numeric() no módulo unicodedata pode ser utilizada para converter um único caractere chinês Unicode num número de tipo de número de ponto flutuante.
Se não se tratar de uma única letra, ocorrerá um erro. Além disso, os caracteres não numéricos causarão um erro.
import unicodedata
print(unicodedata.numeric('五'))
print(type(unicodedata.numeric('五')))
# 5.0
# <class 'float'>
print(unicodedata.numeric('十'))
# 10.0
print(unicodedata.numeric('参'))
# 3.0
print(unicodedata.numeric('億'))
# 100000000.0
# print(unicodedata.numeric('五十'))
# TypeError: numeric() argument 1 must be a unicode character, not str
# print(unicodedata.numeric('漢'))
# ValueError: not a numeric character