Validação de Strings em Python: Como Usar .isalnum() Para Sanitizar Entradas de Usuários

Validação de Strings em Python: Como Usar .isalnum() Para Sanitizar Entradas de Usuários

Validar a composição de dados inseridos por usuários é uma etapa crítica no tratamento de formulários, sanitização de entradas e pré-processamento de dados. O Python oferece os métodos nativos de string .isdigit(), .isalpha() e .isalnum(), que permitem checar rapidamente se um texto é composto exclusivamente por números, letras ou uma combinação de ambos. Essa abordagem elimina a necessidade de carregar expressões regulares pesadas para validações simples do dia a dia.

Python
def validar_composicao_string(texto: str) -> dict:
    """Verifica a composição de uma string utilizando métodos nativos do Python."""
    if not isinstance(texto, str) or not texto:
        return {
            "apenas_numeros": False,
            "apenas_letras": False,
            "alfanumerico": False
        }

    # .isdigit(): Retorna True apenas se TODOS os caracteres forem dígitos (0-9)
    eh_digito = texto.isdigit()

    # .isalpha(): Retorna True apenas se TODOS os caracteres forem alfabéticos (a-z, A-Z)
    eh_alfabetico = texto.isalpha()

    # .isalnum(): Retorna True se contiver APENAS letras e/ou números (sem símbolos ou espaços)
    eh_alfanumerico = texto.isalnum()

    return {
        "apenas_numeros": eh_digito,
        "apenas_letras": eh_alfabetico,
        "alfanumerico": eh_alfanumerico
    }

# --- Exemplo de uso prático ---
if __name__ == "__main__":
    testes = [
        "123456",        # Apenas dígitos
        "Python",        # Apenas letras
        "Python3",       # Alfanumérico (letras e números)
        "Código 2026",   # Contém espaço (falhará nas validações estritas)
        "user_name!"     # Contém caracteres especiais
    ]

    for entrada in testes:
        resultado = validar_composicao_string(entrada)
        print(f"Entrada: '{entrada}'")
        print(f" -> Apenas números? {resultado['apenas_numeros']}")
        print(f" -> Apenas letras?  {resultado['apenas_letras']}")
        print(f" -> Alfanumérico?    {resultado['alfanumerico']}\n")

Pontos-chave

  • Espaços e Símbolos Retornam False: Os métodos .isdigit(), .isalpha() e .isalnum() exigem que todos os caracteres da string atendam ao critério. Qualquer espaço em branco, ponto, hífen ou símbolo especial fará o método retornar False.

  • String Vazia Retorna False: Chamadas como "".isdigit() ou "".isalpha() sempre retornam False. Sempre valide se a string não está vazia antes do processamento.

  • Suporte a Unicodes e Acentos: O método .isalpha() considera caracteres acentuados (ex: "ç", "á", "ñ") como caracteres alfabéticos válidos, enquanto .isdigit() reconhece numerais em formato Unicode (para validar estritamente [0-9] ASCII, prefira .isdecimal()).

  • Números Negativos e Decimais: O método .isdigit() avalia caracteres individuais. Portanto, números com ponto decimal ("10.5") ou sinal negativo ("-10") retornarão False devido aos símbolos . e -.

Comentários

Postagens mais visitadas deste blog

Gerando Relatórios em PDF com Python (ReportLab e FPDF)

Python para Computação Quântica: Introdução com Qiskit

C# e Banco de Dados: Como Conectar e Realizar Operações com SQL Server