Python string contains pour trouver des sous-chaînes

Python string contains utilise l’opérateur in pour vérifier si une sous-chaîne apparaît dans le texte. Utilisez-le quand vous avez besoin d’un test oui/non rapide pour router la logique, valider une entrée ou filtrer des messages. Il offre une manière simple et lisible de tester si un texte contient une sous-chaîne.

Exemple Python String Contains Pour Faire Correspondre Du Texte

Sortie :

La sortie apparaîtra ici...

Sortie :

envoyer le suivi

Comment Fonctionne Cet Exemple

  • La chaîne status contient un court message d’état.
  • L’expression "expédiée" in status effectue un test d’appartenance de sous-chaîne et renvoie True.
  • Comme la condition est vraie, l’appel print s’exécute.
  • La sortie montre que l’action ne se déclenche que lorsque le mot-clé est présent.

Erreurs Courantes

Erreur 1 : Supposer que la vérification est insensible à la casse.

subject = "Commande Expédiée"
if "expédiée" in subject:
    print("envoyer le suivi")
subject = "Commande Expédiée"
if "expédiée" in subject.casefold():
    print("envoyer le suivi")

Pourquoi ça arrive : in compare les caractères exactement, donc la casse doit correspondre. Normalisez les deux chaînes (souvent avec casefold()) quand vous voulez une vérification insensible à la casse.

Erreur 2 : Utiliser find() dans un test de vérité.

message = "promo"
if message.find("pro"):
    print("marquer")
message = "promo"
if "pro" in message:
    print("marquer")

Pourquoi ça arrive : find() renvoie l’index, et l’index 0 est falsy même quand la sous-chaîne est trouvée. Utilisez in pour un test booléen, ou comparez find() à -1 si vous avez besoin de l’index.

Erreur 3 : Oublier que les chaînes vides correspondent toujours.

needle = ""
text = "facture 123"
if needle in text:
    print("correspond")
needle = ""
text = "facture 123"
if needle and needle in text:
    print("correspond")

Pourquoi ça arrive : Python considère la chaîne vide comme une sous-chaîne de toute chaîne. Protégez-vous contre une entrée vide quand elle doit signifier « aucune correspondance ».

string contains vs find : lequel utiliser

BesoinUtiliser
Seulement une réponse oui/nonneedle in text
La position de la correspondancetext.find(needle)
Une erreur quand absenttext.index(needle)

Utilisez in pour le test d’appartenance le plus rapide et le plus clair. Utilisez find() ou index() seulement si vous avez aussi besoin de la position de la correspondance ou si vous voulez qu’un échec lève une erreur.

Considérations De Performance

Un test de sous-chaîne parcourt le texte linéairement, donc chaque in est O(n) par rapport à la longueur du texte. Pour des tests répétées insensibles à la casse, normalisez le texte une seule fois (par exemple, text = text.casefold()) et réutilisez-le pour éviter du travail supplémentaire. Si vous devez rechercher de nombreux motifs différents dans des textes très longs, envisagez une recherche plus spécialisée ou une regex seulement quand le motif l’exige.

Quand utiliser Python string contains

  • Vous avez besoin d’un test rapide de sous-chaîne pour décider quelle branche de logique exécuter.
  • Vous validez une entrée en recherchant des mots-clés ou des marqueurs requis.
  • Vous voulez le test booléen le plus clair possible plutôt qu’un index.
  • Vous n’avez pas besoin de jokers ou de motifs complexes ; pour cela, utilisez re.
  • Vous n’avez pas besoin de la position de la correspondance ; si vous en avez besoin, utilisez find() ou index().