Cómo comprobar que una cadena contiene un número en Python

  1. La función any de Python con str.isdigit para comprobar si una cadena contiene un número
  2. map()Función
  3. re.search(r'\d') para comprobar si una cadena contiene un número

Este artículo introduce cómo comprobar si una cadena de Python contiene un número o no.

La función incorporada de Python función any junto con str.isdigit devolverá True si la cadena dada contiene un número en ella, de lo contrario, devolverá False.

El método de búsqueda de expresiones regulares de Python con el patrón r'\d' también podría devolver True si la cadena dada contiene un número.

La función any de Python con str.isdigit para comprobar si una cadena contiene un número

Cualquier función devuelve True si cualquier elemento del iterable dado es True, de lo contrario, devuelve False.

str.isdigit() devuelve True si todos los caracteres de la cadena dada son dígitos, False en caso contrario.

any(chr.isdigit() for chr in stringExample)

Si stringExample contiene al menos un número, entonces el código anterior devuelve True porque chr.isdigit() for chr in stringExample tiene al menos un True en el iterable.

Ejemplo de trabajo

str1 = "python1"
str2 = "nonumber"
str3 = "12345"

print(any(chr.isdigit() for chr in str1))
print(any(chr.isdigit() for chr in str2))
print(any(chr.isdigit() for chr in str3))

Producción:

True
False
True

map()Función

Python map(function, iterable) función aplica function a cada elemento del iterable dado y devuelve un iterador que produce el resultado anterior.

Por lo tanto, podríamos reescribir la solución anterior a,

any(map(str.isdigit, stringExample))

Ejemplo de trabajo

str1 = "python1"
str2 = "nonumber"
str3 = "12345"

print(any(map(str.isdigit, str1)))
print(any(map(str.isdigit, str2)))
print(any(map(str.isdigit, str3)))

Producción:

True
False
True

re.search(r'\d') para comprobar si una cadena contiene un número

re.search(r'\d', string) patrón escanea la secuencia y devuelve el objeto coincidente para la primera ubicación que coincida con el patrón dado - \d eso significa cualquier número entre 0 y 9 y devuelve None si no se encuentra ninguna coincidencia.

import re

print(re.search(r'\d', "python3.8"))
#output: <re.Match object; span=(6, 7), match='3'>

El objeto coincidente contiene el doble span que indica la posición inicial y final de la match, y también el contenido coincidente como match = '3'.

La función bool() podría llevar el resultado de la re.search desde match object o None a True o False.

Ejemplo de trabajo

import re

str1 = "python12"
str2 = "nonumber"
str3 = "12345"

print(bool(re.search(r'\d', str1)))
print(bool(re.search(r'\d', str2)))
print(bool(re.search(r'\d', str3)))

Producción:

True
False
True

Artículo relacionado - Python String

  • Eliminar números de cadena en Python
  • Eliminar de la cadena en Python