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
statuscontient un court message d’état. - L’expression
"expédiée" in statuseffectue un test d’appartenance de sous-chaîne et renvoieTrue. - Comme la condition est vraie, l’appel
prints’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
| Besoin | Utiliser |
|---|---|
| Seulement une réponse oui/non | needle in text |
| La position de la correspondance | text.find(needle) |
| Une erreur quand absent | text.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()ouindex().