Comment vérifier si une chaîne de caractères contient une sous-chaîne en Python

  1. Opérateur in pour vérifier si une chaîne contient une sous-chaîne
  2. Méthode str.find() pour vérifier si une chaîne de caractères contient une sous-chaîne
  3. str.index() Méthode
  4. Solution de vérification des sous-chaînes Conclusion

C’est assez souvent que nous devons vérifier si la chaîne donnée contient une sous-chaîne spécifique. Nous allons lister ici quelques méthodes, puis comparer les performances en temps réel pour sélectionner la méthode la plus efficace.

Nous prendrons la chaîne - It is a given string comme chaîne donnée et given est la sous-chaîne à vérifier.

Opérateur in pour vérifier si une chaîne contient une sous-chaîne

in operator est l’opérateur de vérification des membres. Le membre x in y est évalué comme étant True si x est un membre de y, ou en d’autres termes, y contient x.

Il retourne True si la chaîne y contient la sous-chaîne x.

>>> `given` in `It is a given string`
True
>>> `gaven` in `It is a given string`
False

Performance de l’opérateur in

import timeit

def in_method(given, sub):
    return sub in given

print(min(timeit.repeat(lambda: in_method('It is a given string', 'given')))
0.2888628

Méthode str.find() pour vérifier si une chaîne de caractères contient une sous-chaîne

find est une méthode intégrée de string - str.find(sub).

Elle retourne l’index le plus bas de str où la sous-chaîne sub est trouvée, sinon retourne -1 si sub n’est pas trouvée.

>>> givenStr = 'It is a given string'
>>> givenStr.find('given')
8
>>> givenStr.find('gaven')
-1

Performance de la méthode str.find()

import timeit

def find_method(given, sub):
    return given.find(sub)

print(min(timeit.repeat(lambda: find_method('It is a given string', 'given'))))
0.42845349999999993

str.index() Méthode

str.index(sub) is a string built-in method that returns the lowest index in str where sub is found. It will raise ValueError when the substring sub is not found.

>>> givenStr = 'It is a given string'
>>> givenStr.index('given')
8
>>> givenStr.index('gaven')
Traceback (most recent call last):
  File "<pyshell#7>", line 1, in <module>
    givenStr.index('gaven')
ValueError: substring not found

str.index() Performance de la méthode

import timeit

def find_method(given, sub):
    return given.find(sub)

print(min(timeit.repeat(lambda: find_method('It is a given string', 'given'))))
0.457951

Solution de vérification des sous-chaînes Conclusion

  1. L’opérateur in est celui que vous devez utiliser pour vérifier si une sous-chaîne existe dans la chaîne donnée car il est le plus rapide
  2. str.find() et str.index() pourraient aussi être utilisés mais pas l’optimal à cause de la mauvaise performance

Article connexe - Python String

  • Comment vérifier qu'une chaîne est vide de manière pythonique
  • Comment supprimer les espaces dans une chaîne de caractères en Python
  • Comment convertir une chaîne de caractères en datetime en Python
  • Comment convertir une chaîne de caractères en minuscules en Python 2 et 3
  • Comment convertir une liste en chaîne de caractères en Python
  • Comment convertir une chaîne de caractères en Float ou Int en Python
  • Comment lire un fichier ligne par ligne dans une liste en Python
  • Comment convertir une chaîne de caractères en octets en Python
  • comments powered by Disqus