Pular para o conteúdo

Comparando Substrings no Python

CodeMDD.io

Como Verificar se uma String em Python Contém uma Substring

Python Tricks Dictionary Merge

Se você é novo na programação ou vem de uma linguagem de programação diferente de Python, pode estar procurando a melhor maneira de verificar se uma string contém outra string em Python.

Neste tutorial, você se concentrará na maneira mais Pythonica de lidar com essa tarefa, usando o operador de pertencimento in. Além disso, você aprenderá como identificar os métodos de string corretos para casos de uso relacionados, mas diferentes.

Por fim, você também aprenderá como encontrar substrings em colunas de um DataFrame do pandas. Isso é útil se você precisar pesquisar informações de um arquivo CSV. Você poderia usar a abordagem que você aprenderá na próxima seção, mas se estiver trabalhando com dados tabulares, é melhor carregar os dados em um DataFrame do pandas e pesquisar por substrings no pandas.

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

Se você precisa verificar se uma string contém uma substring, use o operador de pertencimento in do Python. Em Python, essa é a maneira recomendada de confirmar a existência de uma substring em uma string:

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

O operador de pertencimento in lhe oferece uma maneira rápida e legível de verificar se uma substring está presente em uma string. Você pode notar que essa linha de código quase se lê como em inglês.

Observação: Se você deseja verificar se a substring não está na string, então você pode usar o not in:

"segredo" not in raw_file_content

Como a substring "segredo" está presente em raw_file_content, o operador not in retorna False.

  • True se o Python encontrar a substring
  • False se o Python não encontrar a substring
if "segredo" in raw_file_content:
print("Encontrado!")

Generalize seu Teste Removendo a Sensibilidade a Maiúsculas e Minúsculas

Para tornar seu teste de substring insensível a maiúsculas e minúsculas, você pode usar o método lower() ou upper() para converter ambas as strings para o mesmo caso antes de fazer a comparação. Você pode usar, por exemplo, o lower() para converter tudo em minúsculas:

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

Aqui, você converte raw_file_content em minúsculas usando o método lower() e, em seguida, verifica se "segredo" está presente nessa nova versão em minúsculas. Dessa forma, o teste será insensível a maiúsculas e minúsculas.

Aprenda Mais Sobre a Substring

Quando você usa o in para verificar se uma string contém uma substring, o Python retorna apenas um valor booleano:

"segredo" in raw_file_content

Mas, às vezes, você pode querer saber mais sobre a posição em que a substring começa ou a quantidade de ocorrências na string. Para obter essas informações, você pode usar os métodos find() e count() da classe str do Python.

O método find() retorna a posição (índice) da primeira ocorrência da substring na string. Se a substring não for encontrada, ele retornará -1. Aqui está um exemplo:

raw_file_content.find("segredo")

O método count() retorna a quantidade de ocorrências da substring na string. Aqui está um exemplo:

raw_file_content.count("segredo")

Ambos os métodos são úteis quando você precisa de informações adicionais além do simples fato de saber se uma substring está presente em uma string.

Encontre uma Substring Com Condições Usando Regex

Para encontrar uma substring com base em condições mais complexas, você pode usar expressões regulares (regex) em Python. A biblioteca re do Python fornece suporte para trabalhar com padrões de regex.

Aqui está um exemplo de como encontrar uma substring que começa e termina com uma determinada letra usando regex:

import re
pattern = r"\bs\w*s\b"
if re.search(pattern, raw_file_content):
print("Encontrado!")

Neste exemplo, o padrão de regex r"\bs\w*s\b" corresponde a uma palavra que começa com ‘s’, pode ter zero ou mais caracteres intermediários (\w*) e termina com ‘s’. O re.search() retorna True se encontrar uma correspondência.

As expressões regulares podem ser bastante poderosas em termos de manipulação de strings, mas também podem ser complexas e difíceis de entender. Portanto, use-as quando necessário e quando padrões de string mais simples não forem suficientes.

Encontre uma Substring em uma Coluna de DataFrame do Pandas

Se você precisa encontrar substrings em colunas de um DataFrame do pandas, a biblioteca oferece um recurso conveniente para isso. Aqui está um exemplo de como pesquisar substrings em uma coluna de um DataFrame do pandas:

import pandas as pd
data = {
"Coluna1": ["abc", "def", "ghi"],
"Coluna2": ["jkl", "mno", "pqr"]
}
df = pd.DataFrame(data)
query = "a"
sub_df = df[df["Coluna1"].str.contains(query)]

Neste exemplo, você tem um DataFrame df com duas colunas, “Coluna1” e “Coluna2”. Você pode usar o método str.contains() para verificar se cada valor na coluna “Coluna1” contém a substring “a”. O resultado é um novo DataFrame sub_df que contém apenas as linhas onde a substring “a” foi encontrada na coluna “Coluna1”.

Isso é útil quando você precisa filtrar os dados com base em substrings e trabalhar apenas com as linhas que atendem aos seus critérios.

Conclusão

Neste tutorial, você aprendeu como verificar se uma string em Python contém uma substring. Usando o operador de pertencimento in, você pode fazer esse teste de maneira rápida e fácil. Se você precisa de mais informações sobre a substring, como a posição em que ela começa ou a quantidade de ocorrências na string, você pode usar os métodos find() e count() da classe str. Para casos mais complexos, você também pode usar expressões regulares com a biblioteca re do Python. E se estiver trabalhando com colunas de um DataFrame do pandas, você pode usar o método str.contains() para pesquisar substrings.

Agora você está armado com o conhecimento necessário para verificar eficientemente se uma string contém uma substring em Python. Use essas técnicas em seus projetos para melhorar a funcionalidade e a eficiência do seu código.