O Python tem um Método de Substring ‘Contains’ para Strings?

Ana Maria Gomes
5 minutos de leitura

Conteúdos do tutorial

Ao trabalhar com strings no Python, uma tarefa comum é verificar se uma string contém uma determinada substring. Se você vem de outras linguagens de programação, pode estar procurando por um método como string.contains ou string.indexof. No Python, o processo é igualmente direto, mas os métodos são um pouco diferentes.

Verificando a Presença de Substring com in

A maneira mais idiomática de verificar se uma string contém uma substring no Python é usar o operador in. Esse operador é simples, legível e eficiente. Veja como você pode usá-lo:

if "blah" not in somestring:
    continue

Esse trecho de código fará com que continue para a próxima iteração do laço se “blah” não for encontrado dentro de somestring. É importante notar que o operador in diferencia maiúsculas de minúsculas.

Encontrando o Índice de Substring com find e index

Se você precisa fazer mais do que apenas verificar a presença de uma substring, o Python oferece dois métodos que podem ajudar: find e index. Ambos os métodos procuram por uma substring e retornam o índice da sua primeira ocorrência. No entanto, eles se comportam de maneira diferente quando a substring não é encontrada.

Usando o Método find

O método find retorna -1 se a substring não for encontrada. Aqui está um exemplo:

s = "This be a string"
if s.find("is") != -1:
    print("Encontrado 'is' na string.")
else:
    print("Não tem 'is' aqui!")

Isso imprimirá “Encontrado ‘is’ na string.” porque “is” é de fato uma substring de s.

Usando o Método index

O método index é semelhante ao find, mas em vez de retornar -1, ele gera um ValueError se a substring não for encontrada. Veja como você pode usá-lo:

try:
    position = s.index("is")
    print(f"Encontrado 'is' na posição {position}.")
except ValueError:
    print("Não tem 'is' aqui!")

Por Que Você Deve Preferir in em Vez de __contains__

Embora você possa se deparar com o método __contains__, que está por trás do operador in, não é recomendado usá-lo diretamente. Métodos com sublinhados duplos são geralmente destinados para uso interno. O operador in é a maneira pretendida de verificar a presença de substring e é mais legível.

Considerações de Desempenho

Quando se trata de desempenho, usar o operador in é tipicamente mais rápido do que usar find, index ou __contains__. Isso ocorre porque o operador in é otimizado para essa tarefa específica, e não requer as etapas extras de busca e chamada de método que __contains__ exige.

Resumo

No Python, o operador in é a maneira mais eficiente e idiomática de verificar se uma string contém uma determinada substring. É legível, direto e tem bom desempenho. Para casos em que você precisa do índice de uma substring, você pode usar find ou index, mas lembre-se de lidar com seus comportamentos diferentes quando a substring não for encontrada. Lembre-se, o Python é projetado para ser legível, então usar as ferramentas que a linguagem oferece da maneira que são destinadas é geralmente a melhor abordagem.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse:
Conteúdos do tutorial