Python: verifique se a string contém substring

Verificar se uma string contém uma substring ajuda a generalizar condicionais e a criar um código mais flexível. Além disso, dependendo do seu modelo de domínio – verificar se uma string contém uma substring também pode permitir inferir campos de um objeto, se uma string codifica um campo em si.

Neste guia, daremos uma olhada em como verificar se uma string contém uma substring em Python.

A in operador

A maneira mais fácil de verificar se uma string Python contém uma substring é usar o método in operador.

A in O operador é usado para verificar estruturas de dados quanto à associação em Python. Ele retorna um booleano (ou True or False). Para verificar se uma string contém uma substring em Python usando o in operador, simplesmente o invocamos na superstring:

fullstring = "StackAbuse"
substring = "tack"

if substring in fullstring:
    print("Found!")
else:
    print("Not found!")

Este operador é uma abreviação para chamar o objeto __contains__ método e também funciona bem para verificar se um item existe em uma lista. Vale ressaltar que é não é seguro para nulos, então se nosso fullstring estava apontando para None, uma exceção seria lançada:

TypeError: argument of type 'NoneType' is not iterable

Para evitar isso, primeiro você deseja verificar se aponta para None ou não:

fullstring = None
substring = "tack"

if fullstring != None and substring in fullstring:
    print("Found!")
else:
    print("Not found!")

A String.index() Forma

O tipo String em Python possui um método chamado index() que pode ser usado para encontrar o índice inicial da primeira ocorrência de uma substring em uma string.

Se a substring não for encontrada, um ValueError é lançada uma exceção, que pode ser tratada com um bloco try-except-else:

fullstring = "StackAbuse"
substring = "tack"

try:
    fullstring.index(substring)
except ValueError:
    print("Not found!")
else:
    print("Found!")

Este método é útil se você também precisar saber a posição da substring, em vez de apenas sua existência na string completa. O próprio método retorna o índice:

print(fullstring.index(substring))

Porém - para verificar se uma string contém uma substring, esta é uma abordagem detalhada.

O método String.find()

A classe String possui outro método chamado find() que é mais conveniente de usar do que index(), principalmente porque não precisamos nos preocupar em lidar com exceções.

If find() não encontrar uma correspondência, ele retornará -1, caso contrário, retornará o índice mais à esquerda da substring na string maior:

Confira nosso guia prático e prático para aprender Git, com práticas recomendadas, padrões aceitos pelo setor e folha de dicas incluída. Pare de pesquisar comandos Git no Google e realmente aprender -lo!

fullstring = "StackAbuse"
substring = "tack"

if fullstring.find(substring) != -1:
    print("Found!")
else:
    print("Not found!")

Naturalmente, ele realiza a mesma pesquisa que index() e retorna o índice do início da substring dentro da string pai:

print(fullstring.find(substring))

Expressões regulares (RegEx)

Expressões regulares fornecem uma maneira mais flexível (embora mais complexa) de verificar strings quanto à correspondência de padrões. Com Expressões Regulares, você pode realizar pesquisas flexíveis e poderosas através de espaços de pesquisa muito maiores, em vez de verificações simples, como as anteriores.

Python é fornecido com um módulo integrado para expressões regulares, chamado re. O re módulo contém uma função chamada search(), que podemos usar para corresponder a um padrão de substring:

from re import search

fullstring = "StackAbuse"
substring = "tack"

if search(substring, fullstring):
    print "Found!"
else:
    print "Not found!"

Este método é melhor se você precisar de uma função de correspondência mais complexa, como correspondência sem distinção entre maiúsculas e minúsculas, ou se estiver lidando com grandes espaços de pesquisa. Caso contrário, a complicação e a velocidade mais lenta do regex devem ser evitadas para casos de uso simples de correspondência de substring.

Sobre o autor

Este artigo foi escrito por Jacob Stopak, consultor e desenvolvedor de software apaixonado por ajudar outras pessoas a melhorar suas vidas por meio do código. Jacó é o criador de Compromisso inicial – um site dedicado a ajudar desenvolvedores curiosos a aprender como seus programas favoritos são codificados. Seu projeto em destaque ajuda as pessoas aprenda Git no nível do código.

Carimbo de hora:

Mais de Abuso de pilha