Estrai numeri da una stringa in Python

Questo tutorial spiega come ottenere numeri da una stringa in Python. Elenca anche alcuni codici di esempio per chiarire ulteriormente il concetto utilizzando approcci diversi.

Usa la comprensione della lista per estrarre i numeri da una stringa

I numeri di una stringa possono essere ottenuti mediante la semplice comprensione di una lista. Il metodo split() viene utilizzato per convertire una stringa in una lista di caratteri e il metodo isdigit() viene utilizzato per verificare se una cifra viene trovata attraverso l’iterazione.

Un esempio di codice di base viene fornito come:

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)

Produzione:

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

Tuttavia, questo codice non identifica i numeri forniti con gli alfabeti.

Usa il modulo RegEx per estrarre numeri da una stringa

Il modulo re di Python fornisce anche funzioni che possono cercare nella stringa ed estrarre i risultati. Il modulo re fornisce il metodo findall() che restituisce una lista di tutte le corrispondenze. Di seguito viene fornito un codice di esempio:

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

Produzione:

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

La soluzione RegEx funziona per numeri positivi e negativi e supera il problema riscontrato nell’approccio List Comprehension.

Articolo correlato - Python String

  • Crea una stringa multilinea in Python