Tutoriais

Verificando se uma string representa um valor numérico em Python

Ana Maria Gomes 20 abr Básico 5xp
Compartilhar

Ao trabalhar com Python, você pode se deparar com situações em que precisa determinar se uma string representa um valor numérico, como um inteiro ou um ponto flutuante. Esse é um cenário comum ao lidar com entrada de usuário ou análise de dados. Neste artigo, exploraremos vários métodos para verificar se uma string pode ser considerada numérica em Python.

Usando Try-Except para Conversão Numérica

Uma das maneiras mais diretas de verificar se uma string é numérica é tentando convertê-la para um float. Se a conversão for bem-sucedida, a string é numérica. Aqui está uma função simples para fazer isso:

def e_numero(s):
    try:
        float(s)
        return True
    except ValueError:
        return False

Este método é simples e eficaz. Ele pode lidar com a maioria dos formatos numéricos, incluindo notação científica. Embora alguns possam considerá-lo um pouco desajeitado, na verdade é bastante eficiente. O bloco try-except não introduz uma sobrecarga significativa, pois captura rapidamente a exceção mais comum sem uma busca extensiva por quadros de pilha.

Verificando Dígitos com isdigit()

Para strings que representam inteiros não negativos, você pode usar o método isdigit():

a = "03523"
print(a.isdigit())  # Saída: True

b = "963spam"
print(b.isdigit())  # Saída: False
Testar

Este método faz parte da API de strings do Python e é muito rápido. No entanto, ele é limitado a inteiros sem sinal e não funcionará para floats ou números negativos.

Expressões Regulares e Métodos Alternativos

Embora expressões regulares possam ser usadas para verificar se uma string é numérica, elas geralmente são mais lentas e mais complexas do que o método try-except. Aqui está um exemplo de uma abordagem com expressão regular:

import re

def e_numero_regex(s):
    """ Retorna True se a string for um número. """
    if re.match("^\d+?\.\d+?$", s) is None:
        return s.isdigit()
    return True
    
print(e_numero_regex('o')) #saída False
Testar

Esta função usa uma expressão regular para verificar um padrão que corresponde a um float. No entanto, ela não suporta notação científica e pode ser mais lenta do que o método try-except.

Outra alternativa é usar manipulação de strings:

def e_numero_repl_isdigit(s):
    """ Retorna True se a string for um número. """
    return s.replace('.','',1).isdigit()

Esta função remove um ponto decimal e depois verifica se a string restante é toda composta por dígitos. É um truque inteligente para floats, mas, como o método regex, falha em reconhecer a notação científica.

Comparativos e Melhores Práticas

Comparativos mostram que o método try-except é o único que lida corretamente com todos os formatos numéricos, incluindo notação científica. Ele também é competitivo em termos de velocidade, especialmente quando a string é de fato um número.

Em conclusão, embora existam várias maneiras de verificar se uma string representa um valor numérico em Python, o método try-except é o mais robusto e eficiente. Ele lida com vários formatos numéricos, incluindo notação científica, e tem bom desempenho em comparativos.

Lembre-se, ao lidar com entrada de usuário, sempre garanta que a entrada seja válida antes de prosseguir com a lógica do seu programa. Os métodos discutidos aqui podem ajudá-lo a validar a entrada numérica de forma eficaz.

Em resumo, para verificar se uma string representa um valor numérico em Python, o método try-except é a melhor prática. É simples, rápido e lida com uma ampla gama de formatos numéricos. Seja lidando com inteiros, pontos flutuantes ou números em notação científica, este método informará de maneira confiável se uma string é numérica.

Cursos gratuitos para continuar aprendendo

Curso
Grátis · 2h 13min

Aprenda sobre variáveis, loops e funções e crie seu primeiro projeto Python em apenas 2 horas!

Curso
Grátis · 3h 47min

Saia do zero e analise dados com Python e Pandas neste curso gratuito com certificado!

Curso
Grátis · 4h 11min

Aprenda a programar com Python e explore a inteligência artificial! Crie um chatbot prático que interage com seus próprios dados. Comece agora!

Ver todos os cursos

1 comentário

Exclusivo PRO
Faça parte da discussão

Comente e participe da conversa

Crie sua conta gratuita e compartilhe sua opinião nos comentários.

Entre para a Asimov
KM
Kelviny Mickael há 4 meses

Perfeito! Era o que estava procurando... :)