Converte a cadea numérica str en número int, flota en Python

Negocios

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()
  • 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.

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()

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
Copied title and URL