Pular para o conteúdo

Como Usar eficientemente o módulo Python Contains?

CodeMDD.io

Como Confirmar se uma String em Python Contém outra String

Se você precisa verificar se uma string contém uma substring, use o operador de associação “in” do Python. Em Python, esta é a maneira recomendada de confirmar a existência de uma substring em uma string:

raw_file_content = '''Oi, seja bem-vindo.
Esta é um arquivo especial e oculto com um segredo SECRETO.
Eu não quero te contar o segredo,
mas eu quero te dizer secretamente que eu tenho um.'''
"segredo" in raw_file_content

O operador de associação “in” oferece uma maneira rápida e legível de verificar se uma substring está presente em uma string. Você pode perceber que a linha de código quase se lê como inglês.

Observe que, se você deseja verificar se a substring não está na string, você pode usar “not in”:

"segredo" not in raw_file_content

Quando você usa “in”, a expressão retorna um valor booleano:

  • True se o Python encontrar a substring
  • False se o Python não encontrar a substring

Você pode usar essa sintaxe intuitiva em declarações condicionais para tomar decisões em seu código:

if "segredo" in raw_file_content:
print("Encontrado!")

Neste trecho de código, você usa o operador de associação para verificar se “segredo” é uma substring de raw_file_content. Se for, você imprimirá uma mensagem no terminal.

Para negar a condição de verificação de substring, você pode usar a palavra-chave not:

if "segredo" not in raw_file_content:
print("Não encontrado!")

Aqui, a mensagem “Não encontrado!” será impressa se “segredo” não for uma substring de raw_file_content.

Generalize Sua Verificação Removendo a Sensibilidade a Maiúsculas e Minúsculas

Em alguns casos, você pode querer verificar se uma string contém uma substring, independentemente de letras maiúsculas ou minúsculas. Por exemplo, você pode ter uma entrada de usuário que pode variar em termos de capitalização.

Para generalizar sua verificação e remover a sensibilidade a maiúsculas e minúsculas, você pode converter ambas as strings para letras minúsculas ou maiúsculas antes de realizar a verificação. Aqui está um exemplo:

raw_file_content = '''Oi, seja bem-vindo.
Esta é um arquivo especial e oculto com um segredo SECRETO.
Eu não quero te contar o segredo,
mas eu quero te dizer secretamente que eu tenho um.'''
substring = "Segredo"
if substring.lower() in raw_file_content.lower():
print("Encontrado!")

Ao converter ambas as strings para letras minúsculas usando o método lower(), você garante que a verificação seja insensível a maiúsculas e minúsculas. Neste exemplo, a mensagem “Encontrado!” será impressa, porque a substring “Segredo” está presente em raw_file_content, mesmo que a capitalização seja diferente.

Saiba Mais Sobre a Substring

Agora que você sabe como verificar se uma string contém uma substring, é útil saber mais sobre a substring em si. Você pode obter várias informações úteis usando os métodos de string do Python.

Por exemplo, você pode usar o método count() para contar quantas vezes uma substring aparece em uma string:

substring = "segredo"
count = raw_file_content.lower().count(substring)
print(count)

Este código retornará o número de ocorrências da substring “segredo” em raw_file_content (ignorando a capitalização). No exemplo anterior, a saída será 2, porque a substring aparece duas vezes.

Outro método útil é o index(), que retorna a posição da primeira ocorrência de uma substring em uma string:

substring = "segredo"
position = raw_file_content.lower().index(substring)
print(position)

Este código retornará a posição (índice) da primeira ocorrência da substring “segredo” em raw_file_content (ignorando a capitalização). No exemplo anterior, a saída será 38, que é o índice da primeira letra “s”.

Além disso, você pode usar os métodos startswith() e endswith() para verificar se uma string começa ou termina com uma determinada substring:

string = "Oi, tudo bem?"
print(string.startswith("Oi")) # True
print(string.endswith("bem?")) # True

Neste código, os métodos startswith() e endswith() retornarão True se a string começar ou terminar com a substring fornecida.

Encontre uma Substring Com Condições Usando Regex

Em alguns casos, você pode precisar encontrar uma substring que atenda a certas condições específicas. Nesses casos, é útil usar expressões regulares, também conhecidas como regex.

As expressões regulares permitem que você especifique padrões complexos para pesquisar em uma string. Você pode usar a biblioteca padrão re do Python para trabalhar com regex. Aqui está um exemplo de como encontrar uma substring com base em um padrão de regex:

import re
string = "Oi, meu número de telefone é (123) 456-7890."
pattern = r"\(\d{3}\) \d{3}-\d{4}"
result = re.search(pattern, string)
if result:
print(f"Número de telefone encontrado: {result.group()}")
else:
print("Número de telefone não encontrado.")

Este código usa a função re.search() para encontrar uma substring que corresponda ao padrão de regex especificado. No exemplo acima, o padrão de regex \(\d{3}\) \d{3}-\d{4} corresponde ao formato (123) 456-7890, que é um formato típico de número de telefone nos EUA. A mensagem “Número de telefone encontrado: (123) 456-7890” será impressa.

Você pode usar expressões regulares para encontrar substrings que correspondam a padrões mais complexos, como endereços de e-mail, URLs, datas e muito mais.

Encontre uma Substring em uma coluna de DataFrame pandas

Se você estiver trabalhando com dados tabulares, é melhor carregar os dados em um DataFrame pandas e pesquisar as substrings usando os métodos fornecidos pela biblioteca pandas. Aqui está um exemplo de como encontrar uma substring em uma coluna de um DataFrame pandas:

import pandas as pd
data = {
"ID": [1, 2, 3, 4, 5],
"Nome": ["Alice", "Bob", "Charlie", "David", "Eve"],
"Email": ["alice@example.com", "bob@example.com", "charlie@example.com", "david@example.com", "eve@example.com"]
}
df = pd.DataFrame(data)
substring = "example.com"
filtered_df = df[df["Email"].str.contains(substring)]
print(filtered_df)

Este código cria um DataFrame pandas a partir de um dicionário de dados e pesquisa as substrings na coluna “Email” usando o método str.contains(). Se a substring for encontrada, as linhas correspondentes serão filtradas e impressas. No exemplo acima, as linhas com emails que contêm “example.com” serão impressas.

Ao trabalhar com grandes conjuntos de dados tabulares, o uso dos recursos do pandas facilita a pesquisa de substrings em colunas específicas.

Conclusão

Verificar se uma string contém uma substring é uma tarefa comum ao trabalhar com textos em Python. O uso do operador de associação in é a maneira recomendada de realizar esta verificação. Além disso, aprender sobre os métodos de string do Python, expressões regulares e recursos do pandas para pesquisa de substrings pode ajudar em casos mais complexos. Com essas habilidades, você poderá trabalhar com eficiência com strings e realizar ações diferentes em seu código, dependendo da presença ou ausência de uma substring.