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.
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
Comentários