Verificando se uma string possui números. (Python)

Neste post mostro como uma forma simples de verificar se uma string contém algum número. Obviamente, não é a única forma, mas é esta é bem simples.

Para realizar esta verificação, vamos utilizar duas funções nativas do Python: Any e isdigit (str).

A sintaxe para a verificação é esta:

 

Testando esta sintaxe em um console Python:

 

Explicando a sintaxe:

  • Neste caso, a função any vai funcionar como se você estivesse fazendo um for, onde cada loop é um caractere da string;
  • Cada caractere será testado para ver se ele é um número (str.isdigit). Se for, a função any retorna True. Sendo assim, qualquer tipo de número (positivo, negativo, inteiro, decimal, etc) vai ser reconhecido.

 

Imagino que você também não goste de ficar repetindo código por aí. Então podemos encapsular esta sintaxe em uma função:

 

Extra: Alternativa com Regex

Uma alternativa para a abordagem que utilizamos acima é uma expressão regular. O código fica um pouquinho mais complicado (em comparação), mas não o suficiente para inviabilizar.

A sintaxe para verificar com regex é:

 

Testando esta sintaxe em um console Python:

 

Explicando a sintaxe:

  • re.search vai buscar a expressao (r’\d’) na string e retorna um objeto com o resultado se encontrar algo ou None se a expressão não corresponder a qualquer parte da string analisada;
  • bool(<>) vai interpretar o resultado e retornar True se existir alguma coisa ou False se o resultado for None.
  • A expressão \d indica que estamos buscando apenas dígitos, ou seja, qualquer coisa entre 0 e 9, não importando a posição dele na string.

 

Como você pode perceber, a abordagem é bem parecida, o resultado é o mesmo, mas o regex deixa o processo levemente mais complicado.

 

Espero ter ajudado.

The following two tabs change content below.
Breno RdV
Ex-Psicólogo, com quase uma década de experiência em Recursos Humanos e Gestão de Pessoas, atual desenvolvedor e Analista de Sistemas, trabalhando com PowerBuilder, C#, PowerShell e expandindo horizontes para Python, Xamarin, PHP, Angular e (por que não?) Unity.

Comments

comments

Posted in Dev, Python and tagged , , , , .