String Python contém para encontrar substrings
A string Python contém usa o operador in para verificar se uma substring aparece no texto.
Use-o quando precisar de um teste rápido de sim/não para rotear lógica, validar entrada ou filtrar mensagens.
Ele fornece uma maneira simples e legível de testar se o texto contém uma substring.
String Python contém exemplo para correspondência de texto
Saída:
A saída aparecerá aqui...
Saída:
send tracking
Como este exemplo funciona
- A string
statuscontém uma breve mensagem de status. - A expressão
"shipped" in statusrealiza um teste de associação de substring e retornaTrue. - Como a condição é verdadeira, a chamada
printé executada. - A saída mostra que a ação é acionada apenas quando a palavra-chave está presente.
Erros Comuns
Erro 1: presumir que a verificação não diferencia maiúsculas de minúsculas.
subject = "Order Shipped"
if "shipped" in subject:
print("send tracking")
subject = "Order Shipped"
if "shipped" in subject.casefold():
print("send tracking")
Por que isso acontece: in compara os caracteres exatamente, portanto, as letras maiúsculas e minúsculas devem corresponder. Normalize ambas as strings (geralmente com casefold()) quando desejar verificações que não diferenciam maiúsculas de minúsculas.
Erro 2: usar find() em uma verificação da veracidade.
message = "promo"
if message.find("pro"):
print("flag")
message = "promo"
if "pro" in message:
print("flag")
Por que isso acontece: find() retorna o índice e o índice 0 é falso mesmo quando a substring é encontrada. Use in para uma verificação de conteúdo booleano ou compare find() com -1 se precisar do índice.
Erro 3: esquecer que strings vazias sempre correspondem.
needle = ""
text = "invoice 123"
if needle in text:
print("match")
needle = ""
text = "invoice 123"
if needle and needle in text:
print("match")
Por que isso acontece: Python trata a string vazia como uma substring de cada string. Proteja-se contra entradas vazias quando isso significar “sem correspondência”.
string contém vs find: qual usar
| Necessidade | Usar |
|---|---|
| Apenas uma resposta sim/não | needle in text |
| A posição da partida | text.find(needle) |
| Um erro ao faltar | text.index(needle) |
Use in para o teste de adesão mais rápido e claro. Use find() ou index() somente quando você também precisar da posição de correspondência ou quiser que uma falha gere um erro.
Considerações de desempenho
Uma string contém verificação que varre o texto linearmente, então cada teste in tem O(n) no comprimento do texto. Para verificações repetidas que não diferenciam maiúsculas de minúsculas, normalize o texto uma vez (por exemplo, text = text.casefold()) e reutilize-o para evitar trabalho extra. Se você precisar pesquisar muitos padrões diferentes em strings muito grandes, considere uma pesquisa mais especializada ou regex somente quando o padrão precisar.
Quando usar a string Python contém
- Você precisa de uma verificação rápida de substring para decidir qual ramo da lógica executar.
- Você está validando a entrada procurando palavras-chave ou marcadores necessários.
- Você deseja o teste booleano mais claro possível em vez de um resultado de índice.
- Você não precisa de curingas ou padrões complexos; para esses, use
re. - Não precisa da posição da partida; se fizer isso, use
find()ouindex().