Se queres converter unha cadea de números en valores numéricos en Python, usa int() para converter en números enteiros e float() para converter en números de coma flotante.
O seguinte explícase aquí, xunto co código de mostra.
- Uso básico
- Converter cadeas numéricas en números enteiros:
int()
- Converte unha cadea de números en números de coma flotante:
float()
- Converter cadeas numéricas en números enteiros:
- Uso especial
- Converte cadeas en notación binaria, octal e hexadecimal en números
- Converte cadeas en notación exponencial en valores numéricos
- Converte cadeas de números arábigos de ancho completo en números
- Converte unha cadea de caracteres chineses en números
Para converter un valor numérico nunha cadea, use str().
Se queres converter números ou cadeas a varios formatos, utiliza a función format() ou o método de cadea str.format(). Despois podes converter a notación 0, binario, octal, hexadecimal, exponencial, etc. Consulta o seguinte artigo para obter máis información.
- RELACIONADO:Conversión de formato en Python, formato (recheo 0, notación exponencial, hexadecimal, etc.)
Tamén pode converter unha lista de cadeas nunha lista de números. Consulte o seguinte artigo para obter máis detalles.
- Converter cadeas numéricas en números enteiros:int()
- Converte unha cadea de números en números de coma flotante:float()
- Converte cadeas en notación binaria, octal e hexadecimal en números
- Converte cadeas en notación exponencial en valores numéricos
- Converte cadeas de números arábigos de ancho completo en números
- Converte unha cadea de caracteres chineses en números
Converter cadeas numéricas en números enteiros:int()
Podes usar int() para converter unha cadea de números en números de tipo enteiro.
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
Os decimais, incluídos os puntos decimais, e as cadeas separadas por comas provocarán un 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 cadeas delimitadas por comas pódense converter eliminando a coma (substituíndoa por unha cadea baleira) mediante o método substituír().
print(int('10,000'.replace(',', '')))
# 10000
Converte unha cadea de números en números de coma flotante:float()
Un float() pódese usar para converter unha cadea de números nun tipo de número de coma flotante.
print(float('1.23'))
print(type(float('1.23')))
# 1.23
# <class 'float'>
As cadeas coa parte enteira omitida convértense complementando a parte enteira con 0.
print(float('.23'))
# 0.23
As cadeas enteiras tamén se converten en números de coma flotante.
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Converte cadeas en notación binaria, octal e hexadecimal en números
Se se especifica unha base como segundo argumento de int(), a cadea pódese converter nun enteiro int considerándoo como binario, octal, hexadecimal, etc.
print(int('100', 2))
print(int('100', 8))
print(int('100', 16))
# 4
# 64
# 256
Como nos exemplos anteriores, se se omite, o número considérase un número decimal.
print(int('100', 10))
print(int('100'))
# 100
# 100
Se a base está definida en 0, a conversión baséase no prefixo de cadea. Vexa a continuación os prefixos de cadea.
0b
0B
0o
0O
0x
0X
print(int('0b100', 0))
print(int('0o100', 0))
print(int('0x100', 0))
# 4
# 64
# 256
Os prefixos e os alfabetos hexadecimales poden estar en 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
Consulte o seguinte artigo para obter información sobre a interconversión de números e cadeas binarios, octais e hexadecimais.
Converte cadeas en notación exponencial en valores numéricos
As cadeas en notación exponencial pódense converter directamente ao tipo flotante con float().
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'>
A e minúscula tamén pode levar E en maiúscula.
print(float('1.23E-4'))
# 0.000123
Converte cadeas de números arábigos de ancho completo en números
Os números arábigos de ancho completo pódense converter directamente en números mediante int() ou float().
print(int('100'))
print(type(int('100')))
# 100
# <class 'int'>
print(float('100'))
print(type(float('100')))
# 100.0
# <class 'float'>
Non obstante, se os símbolos como os puntos menos e decimais son caracteres de ancho completo, xerarase un ValueError.
# print(float('ー1.23'))
# ValueError: could not convert string to float: '1.23'
Os números pódense converter sen problemas se son caracteres de ancho completo, pero os puntos menos e decimais son caracteres de ancho medio. a conversión é posible substituíndo símbolos de ancho completo por símbolos de ancho medio usando o método substituír().
print(float('-1.23'))
# -1.23
print(float('ー1.23'.replace('ー', '-').replace('.', '.')))
# -1.23
Converte unha cadea de caracteres chineses en números
A función unicodedata.numeric() do módulo unicodedata pódese usar para converter un único carácter chinés Unicode nun número tipo número de coma flotante.
Se non é unha soa letra, producirase un erro. Ademais, os caracteres non numéricos provocarán un 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