Tamanho de fonte
Alto contraste
Altura de linha

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

Avatar de Ana Maria Gomes Ana Maria Gomes
3 minutos de leitura 8 meses atrás

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.

Imagem de um notebook

Cursos de programação gratuitos com certificado

Aprenda a programar e desenvolva soluções para o seu trabalho com Python para alcançar novas oportunidades profissionais. Aqui na Asimov você encontra:

  • Conteúdos gratuitos
  • Projetos práticos
  • Certificados
  • +20 mil alunos e comunidade exclusiva
  • Materiais didáticos e download de código
Inicie agora

Comentários

Comentar
Faça parte da discussão Crie sua conta gratuita e compartilhe
sua opinião nos comentários
Entre para a Asimov