Pular para o conteúdo

Como verificar se uma string contém outra string em Python?

[

Como verificar se uma string em Python contém outra string

por Martin Breuss

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 forma mais “pythonic” de lidar com essa tarefa, usando o operador de associação in. Além disso, você aprenderá como identificar os métodos corretos de string para casos de uso relacionados, mas diferentes.

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

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 associação in do Python. No Python, essa é a maneira recomendada de confirmar a existência de uma substring em uma string:

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

O operador in dá uma forma 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 se fosse em inglês.

"segredo" not in raw_file_content

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

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
if "segredo" in raw_file_content:
print("Encontrado!")

Generalizando sua verificação removendo a sensibilidade à caixa

Em muitos casos, você pode querer verificar se uma string contém uma substring, independentemente de letras maiúsculas ou minúsculas. Por exemplo, se você está procurando a palavra “python” em uma string, deseja que seu programa retorne True se encontrar “Python”, “PYTHON” ou “python” na string.

Para generalizar sua verificação e remover a sensibilidade à caixa, você pode fazer a comparação entre as strings em letras minúsculas usando o método lower():

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

Ao converter tanto a substring quanto a string original para letras minúsculas usando lower(), você garante que a comparação seja feita sem levar em consideração a sensibilidade à caixa.

Saiba mais sobre a substring

Uma vez que você confirmou que uma string contém uma substring, pode ser útil obter mais informações sobre essa substring, como sua posição dentro da string original ou a quantidade de ocorrências.

Para obter a posição da primeira ocorrência da substring em uma string, você pode usar o método find():

raw_file_content = """Oi e seja bem-vindo.
Este é um arquivo especial escondido com um segredo SECRETO.
Eu não quero te contar O Segredo,
mas eu quero secretamente te dizer que tenho um."""
position = raw_file_content.find("segredo")
if position >= 0:
print(f"A substring 'segredo' foi encontrada na posição {position}")

O método find() retorna a posição da primeira ocorrência da substring na string original. Se a substring não for encontrada, o método retorna -1.

Para contar o número de ocorrências de uma substring em uma string, você pode usar o método count():

raw_file_content = """Oi e seja bem-vindo.
Este é um arquivo especial escondido com um segredo SECRETO.
Eu não quero te contar O Segredo,
mas eu quero secretamente te dizer que tenho um."""
count = raw_file_content.count("segredo")
print(f"A substring 'segredo' ocorre {count} vezes")

O método count() retorna o número de ocorrências da substring na string original.

Encontre uma substring com condições usando Regex

Outra forma de encontrar uma substring em uma string é usar expressões regulares (regex). As expressões regulares fornecem uma maneira poderosa e flexível de fazer correspondências de padrões em strings.

Para usar regex em Python, você precisa importar o módulo re:

import re

Em seguida, você pode usar a função search() do módulo re para localizar uma substring em uma string usando uma expressão regular:

raw_file_content = """Oi e seja bem-vindo.
Este é um arquivo especial escondido com um segredo SECRETO.
Eu não quero te contar O Segredo,
mas eu quero secretamente te dizer que tenho um."""
pattern = r"segredo"
match = re.search(pattern, raw_file_content)
if match:
print("Substring encontrada")

Neste exemplo, você usa a expressão regular r"segredo" para encontrar a palavra “segredo” em qualquer posição da string original.

O método search() retorna um objeto de correspondência se a substring for encontrada ou None caso contrário. Você pode usar o objeto de correspondência para obter informações adicionais sobre a substring encontrada, como sua posição na string original.

Encontre uma substring em uma coluna do DataFrame pandas

Se você estiver trabalhando com dados tabulares em Python usando a biblioteca pandas, poderá encontrar substrings em colunas do DataFrame. Isso é especialmente útil se você tiver um grande conjunto de dados em um arquivo CSV e quiser pesquisar as linhas que contêm uma determinada substring.

Para fazer isso, você precisa importar a biblioteca pandas:

import pandas as pd

Em seguida, você pode carregar o arquivo CSV em um DataFrame pandas e usar o método str.contains() para pesquisar as colunas por substrings:

df = pd.read_csv("dados.csv")
substring = "python"
substrings_found = df["coluna"].str.contains(substring)
rows_with_substrings = df[substrings_found]

Neste exemplo, você carrega os dados do arquivo “dados.csv” em um DataFrame pandas. Em seguida, você usa o método str.contains() para pesquisar a coluna “coluna” por substrings que contenham a palavra “python”. O resultado é um objeto booleano que indica quais linhas do DataFrame contêm a substring desejada. Em seguida, você pode selecionar as linhas correspondentes usando a operação de indexação booleana [substrings_found].

Isso permite obter um subconjunto do DataFrame pandas que contém apenas as linhas com a substring desejada.

Conclusão

Neste tutorial, você aprendeu como verificar se uma string em Python contém uma substring. Usando o operador de associação in, você pode verificar de maneira rápida e legível se uma substring está presente em uma string. Além disso, você aprendeu a generalizar sua verificação removendo a sensibilidade à caixa e a encontrar substrings em pandas DataFrame. Espero que este tutorial tenha sido útil e que você possa aplicar esses conhecimentos em seus próprios projetos em Python.