Como Verificar se uma String Contém Caracteres Especiais em Python

PythonBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como verificar se uma string contém caracteres especiais em Python. Isso envolve definir o que constitui um caractere especial e, em seguida, usar diferentes métodos para detectar sua presença dentro de uma string.

O laboratório guia você através da definição de caracteres especiais usando o módulo string e definições personalizadas. Em seguida, você explorará métodos como expressões regulares (regular expressions) e a função str.isalnum() para identificar strings contendo esses caracteres especiais. Ao final deste laboratório, você estará equipado com o conhecimento para lidar efetivamente com caracteres especiais em seus programas Python.

Definir Caracteres Especiais

Nesta etapa, você aprenderá como definir caracteres especiais em Python. Caracteres especiais são caracteres que não são alfanuméricos (letras ou números). Eles incluem símbolos como pontuação, espaços e outros caracteres não-padrão. Identificar e lidar com esses caracteres é crucial para tarefas como limpeza de dados, validação e processamento de texto.

Primeiro, vamos criar um script Python chamado define_special_characters.py em seu diretório ~/project usando o editor VS Code.

## Content of define_special_characters.py
import string

special_characters = string.punctuation
print("Special characters:", special_characters)

Aqui está o que este código faz:

  1. import string: Esta linha importa o módulo string, que fornece uma coleção de constantes de string, incluindo uma string predefinida de caracteres de pontuação comuns.
  2. special_characters = string.punctuation: Esta linha atribui a string de caracteres de pontuação de string.punctuation à variável special_characters.
  3. print("Special characters:", special_characters): Esta linha imprime o valor da variável special_characters no console, juntamente com um rótulo descritivo.

Agora, vamos executar o script. Abra seu terminal e execute o seguinte comando:

python define_special_characters.py

Você deve ver a seguinte saída:

Special characters: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Esta saída mostra a string de caracteres especiais definidos na constante string.punctuation.

Você também pode definir seu próprio conjunto de caracteres especiais. Por exemplo, vamos modificar o script para incluir espaços e alguns símbolos adicionais.

Abra define_special_characters.py no VS Code e modifique-o da seguinte forma:

## Modified content of define_special_characters.py
special_characters = "!@#$%^&*()_+=-`~[]\{}|;':\",./<>?" + " "
print("Special characters:", special_characters)

Neste script modificado, criamos uma string contendo uma combinação de símbolos e um espaço.

Execute o script novamente:

python define_special_characters.py

Você deve ver a seguinte saída:

Special characters: !@#$%^&*()_+=-`~[]{}|;':",./<>?

Esta saída mostra o conjunto personalizado de caracteres especiais que você definiu.

Compreender como definir e identificar caracteres especiais é uma habilidade fundamental na programação Python. Nas próximas etapas, você aprenderá como usar expressões regulares (regular expressions) e o método isalnum() para trabalhar com caracteres especiais de forma mais eficaz.

Usar Expressões Regulares

Nesta etapa, você aprenderá como usar expressões regulares (regular expressions) em Python para identificar caracteres especiais. Expressões regulares são ferramentas poderosas para correspondência de padrões em strings.

Primeiro, vamos criar um script Python chamado regex_special_characters.py em seu diretório ~/project usando o editor VS Code.

## Content of regex_special_characters.py
import re

def find_special_characters(text):
    special_characters = re.findall(r"[^a-zA-Z0-9\s]", text)
    return special_characters

text = "Hello! This is a test string with some special characters like @, #, and $."
special_chars = find_special_characters(text)

print("Special characters found:", special_chars)

Aqui está o que este código faz:

  1. import re: Esta linha importa o módulo re, que fornece operações de expressão regular.
  2. def find_special_characters(text):: Isso define uma função que recebe uma string como entrada e encontra todos os caracteres especiais nela.
  3. special_characters = re.findall(r"[^a-zA-Z0-9\s]", text): Esta linha usa a função re.findall() para encontrar todos os caracteres na string de entrada que não são alfanuméricos (a-z, A-Z, 0-9) ou espaços em branco (\s). [^...] é uma classe de caracteres negada, o que significa que corresponde a qualquer caractere não no conjunto especificado.
  4. return special_characters: Esta linha retorna uma lista dos caracteres especiais encontrados.
  5. As linhas restantes definem uma string de exemplo, chamam a função para encontrar caracteres especiais nela e imprimem o resultado.

Agora, vamos executar o script. Abra seu terminal e execute o seguinte comando:

python regex_special_characters.py

Você deve ver a seguinte saída:

Special characters found: ['!', '@', ',', '#', '$', '.']

Esta saída mostra a lista de caracteres especiais encontrados na string de entrada usando a expressão regular.

Vamos modificar o script para usar uma expressão regular diferente que corresponda apenas a caracteres de pontuação.

Abra regex_special_characters.py no VS Code e modifique-o da seguinte forma:

## Modified content of regex_special_characters.py
import re
import string

def find_punctuation_characters(text):
    punctuation_chars = re.findall(r"[" + string.punctuation + "]", text)
    return punctuation_chars

text = "Hello! This is a test string with some punctuation like ., ?, and !."
punctuation = find_punctuation_characters(text)

print("Punctuation characters found:", punctuation)

Neste script modificado, usamos string.punctuation para definir o conjunto de caracteres de pontuação a serem correspondidos.

Execute o script novamente:

python regex_special_characters.py

Você deve ver a seguinte saída:

Punctuation characters found: ['!', '.', '?', '!']

Esta saída mostra a lista de caracteres de pontuação encontrados na string de entrada usando a expressão regular e a constante string.punctuation.

Usar expressões regulares fornece uma maneira flexível e poderosa de identificar e extrair caracteres especiais de strings em Python.

Verificar com str.isalnum()

Nesta etapa, você aprenderá como usar o método str.isalnum() em Python para verificar se um caractere é alfanumérico (ou seja, uma letra ou um número). Este método é uma maneira simples e eficiente de identificar caracteres especiais, verificando se um caractere não é alfanumérico.

Primeiro, vamos criar um script Python chamado isalnum_check.py em seu diretório ~/project usando o editor VS Code.

## Content of isalnum_check.py
def check_special_character(char):
    if not char.isalnum():
        return True
    else:
        return False

test_characters = ['a', '1', '!', ' ']

for char in test_characters:
    if check_special_character(char):
        print(f"'{char}' is a special character.")
    else:
        print(f"'{char}' is an alphanumeric character.")

Aqui está o que este código faz:

  1. def check_special_character(char):: Isso define uma função que recebe um único caractere como entrada.
  2. if not char.isalnum():: Esta linha verifica se o caractere não é alfanumérico usando o método isalnum(). O método isalnum() retorna True se o caractere for uma letra ou um número e False caso contrário. A palavra-chave not nega o resultado, então a condição é True se o caractere não for alfanumérico.
  3. As linhas restantes definem uma lista de caracteres de teste e iteram sobre eles, chamando a função para verificar se cada caractere é um caractere especial e imprimindo o resultado.

Agora, vamos executar o script. Abra seu terminal e execute o seguinte comando:

python isalnum_check.py

Você deve ver a seguinte saída:

'a' is an alphanumeric character.
'1' is an alphanumeric character.
'!' is a special character.
' ' is a special character.

Esta saída mostra o resultado da verificação de cada caractere na lista usando o método isalnum().

Vamos modificar o script para verificar uma string em busca de caracteres especiais.

Abra isalnum_check.py no VS Code e modifique-o da seguinte forma:

## Modified content of isalnum_check.py
def find_special_characters(text):
    special_chars = []
    for char in text:
        if not char.isalnum() and not char.isspace():
            special_chars.append(char)
    return special_chars

test_string = "Hello! This is a test string with some special characters like @, #, and $."
special_characters = find_special_characters(test_string)

print("Special characters found:", special_characters)

Neste script modificado, definimos uma função que itera sobre uma string e verifica cada caractere para ver se ele não é alfanumérico e não é um caractere de espaço em branco.

Execute o script novamente:

python isalnum_check.py

Você deve ver a seguinte saída:

Special characters found: ['!', '@', ',', '#', '$', '.']

Esta saída mostra a lista de caracteres especiais encontrados na string de entrada usando o método isalnum().

Usar o método isalnum() fornece uma maneira simples e eficiente de identificar caracteres especiais em Python.

Resumo

Neste laboratório, você aprendeu como definir caracteres especiais em Python. Isso envolveu importar o módulo string e utilizar a constante string.punctuation para acessar uma string predefinida de caracteres de pontuação comuns. Você também explorou como definir seu próprio conjunto personalizado de caracteres especiais, concatenando símbolos e espaços específicos em uma string.

O laboratório demonstrou como imprimir esses conjuntos de caracteres especiais definidos no console para verificação. Este processo é crucial para tarefas como limpeza de dados, validação e processamento de texto, onde identificar e lidar com caracteres não alfanuméricos é essencial.