Como verificar uma string contém um número em Python

  1. Python any Função com str.isdigit para verificar se uma String contém um número
  2. Função map()
  3. re.search(r'\d') para verificar se uma string contém um número

Este artigo introduz como verificar se uma string Python contém um número ou não.

Python embutido any função junto com str.isdigit retornará True se a string dada contiver um número, caso contrário, retornará False.

O método de busca de expressão regular Python com padrão r'\d' pode também retornar True se a string dada contiver um número.

Python any Função com str.isdigit para verificar se uma String contém um número

any função retorna True se qualquer elemento da função iterable for True, caso contrário, retorna False.

str.isdigit() retorna True se todos os caracteres da string dada forem dígitos, False de outra forma.

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

Se stringExample contém pelo menos um número, então o código acima retorna True porque chr.isdigit() for chr in stringExample) para chr na stringExample tem pelo menos um True na iterable.

Exemplo de trabalho*

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

Resultado:

True
False
True

Função map()

Python map(function, iterable) função aplica function a cada elemento do dado iterable e retorna um iterador que produz o resultado acima.

Portanto, poderíamos reescrever a solução acima para,

any(map(str.isdigit, stringExample))

Exemplo de trabalho

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

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

Resultado:

True
False
True

re.search(r'\d') para verificar se uma string contém um número

re.search(r'\d', string) padrão escaneia a string e retorna o objeto que corresponde ao primeiro local que corresponde ao padrãofornecido - \d que significa qualquer número entre 0 e 9 e retorna None se não for encontrada nenhuma correspondência.

import re

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

O objeto correspondente contém o span de 2 tubos que indica a posição inicial e final do match, e também o conteúdo correspondente como match = '3'.

A função bool() pode lançar o resultado de re.search do objeto match ou None para True ou False.

Exemplo de trabalho

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

Resultado:

True
False
True

Artigo relacionado - Python String

  • Como converter string para data em Python
  • Dividir string pela metade em Python