Cómo extraer números de una cadena en Python

Este tutorial explica cómo obtener números de una cadena en Python. También enumera algunos códigos de ejemplo para aclarar más el concepto utilizando diferentes enfoques.

Usar la comprensión de listas para extraer números de una cadena

Los números de una cadena se pueden obtener por simple comprensión de la lista. El método split() se utiliza para convertir una cadena en una lista de caracteres y el método isdigit() se utiliza para comprobar si un dígito se encuentra a través de la iteración.

Un ejemplo de código base se da como:

temp_string = "Hi my age is 32 years and 250 days12"
print(temp_string)

numbers = [int(temp)for temp in temp_string.split() if temp.isdigit()]

print(numbers)

Resultado:

Hi my age is 32 years and 250 days12
[32, 250]

Sin embargo, este código no identifica los números que vienen con los alfabetos.

Use el módulo re para extraer números de una cadena

El módulo re de Python también proporciona funciones que pueden buscar a través de la cadena y extraer resultados. El módulo re provee un método findall() que devuelve una lista de todas las coincidencias. A continuación se muestra un código de ejemplo:

import re

temp_string = "Hi my age is 32 years and 250.5 days12"
print(temp_string)
print([float(s) for s in re.findall(r'-?\d+\.?\d*', temp_string)])

Resultado:

Hi my age is 32 years and 250.5 days12
[32.0, 250.5, 12.0]

La solución RegEx funciona para números negativos y positivos y supera el problema encontrado en el enfoque de la comprensión de la lista.

Artículo relacionado - Python String

  • Concatenar valores de cadena e int en Python
  • Eliminar ciertos caracteres de una cadena en Python