HOWTO · Python

Verifique se uma string contém palavra em Python

A instrução if / in pode ser usada para verificar se uma palavra especificada está dentro de uma variável de string ou não em Python.

Nesta página

Para verificar se um texto aparece em uma string Python, use o operador in. Ele retorna um valor booleano e diferencia maiúsculas de minúsculas.

Use a instrução if/in em Python para verificar se uma string contém uma palavra

Para uma busca simples por substring, use in diretamente em uma condição if. O operador retorna um valor booleano, e a comparação diferencia maiúsculas de minúsculas.

text = "This contains a word"
if "word" in text:
    print("Found")
else:
    print("Not Found")

O operador procura uma sequência de caracteres em qualquer posição da string. Ele não exige que haja uma palavra inteira: "is" in "This" é verdadeiro porque esses caracteres aparecem no final de This. Isso pode gerar um falso positivo quando o objetivo é encontrar uma palavra isolada.

Quando as palavras são separadas apenas por espaços comuns, acrescentar um espaço em cada extremidade e procurar o termo delimitado por espaços pode servir como uma solução simples: " is " in (" " + text + " "). Essa abordagem não lida de forma consistente com pontuação, tabulações, quebras de linha ou outros separadores. Se eles forem relevantes, use um padrão com limites de palavra ou divida o texto em tokens.

Use o método find() em Python para verificar se uma string contém uma palavra

find() também procura uma substring e retorna o índice inicial da primeira ocorrência. Se não encontrar o texto solicitado, retorna -1. Compare o resultado explicitamente com -1; não use o próprio índice como condição. O índice 0 é avaliado como falso, enquanto -1 é avaliado como verdadeiro.

text = "word appears here"
position = text.find("word")
if position != -1:
    print("Found at index", position)
else:
    print("Not Found")

Assim, uma correspondência no início da string é reconhecida corretamente. Como in, find() procura substrings, não palavras inteiras. Escolha esse método quando precisar da localização além de verificar se o texto está presente.

Use expressões regulares em Python para verificar se uma string contém uma palavra

Use re.search() quando a busca exigir um padrão, como um termo cercado por limites de palavra. Em uma expressão regular, \b indica a transição entre um caractere de palavra e um caractere que não é de palavra.

import re

text = "This contains a word."
if re.search(r"\bword\b", text):
    print("Found")
else:
    print("Not Found")

O padrão bruto r"\bword\b" encontra word como uma palavra separada segundo as regras de \w do Python. Essas regras podem não corresponder à definição de palavra usada por todos os aplicativos, especialmente quando há tokenização especializada ou limites específicos de um idioma. Para buscas comuns por substring, in é mais simples.

Use o método index() com tratamento de exceções em Python para verificar se uma string contém uma palavra

Assim como find(), index() retorna o índice da primeira correspondência, mas gera ValueError quando a substring não está presente, em vez de retornar -1. Trate essa exceção quando a ausência for uma possibilidade esperada e o índice for útil caso haja uma correspondência.

text = "This contains a word"
try:
    position = text.index("word")
    print("Found at index", position)
except ValueError:
    print("Not Found")

O bloco try trata uma busca bem-sucedida; o bloco except ValueError trata o caso em que a substring não é encontrada. Se você precisa apenas de um valor booleano, in comunica essa intenção de forma mais direta.

Conclusão

Use in para verificar a presença de uma substring comum e lembre-se de que a busca diferencia maiúsculas de minúsculas e pode encontrar caracteres dentro de uma palavra maior. Use um padrão re.search() que considere limites de palavra quando a definição de palavra dele for adequada ao texto. Escolha find() quando precisar de um índice e do resultado -1 para indicar ausência, ou index() quando quiser tratar uma correspondência ausente por meio de ValueError.