Python String index : comment déterminer la position d’une Substring ?

Avec Python, la méthode « index() » permet d’effectuer une recherche au niveau d’une chaîne de caractères (String) de manière à identifier l’index d’une Python Substring (qu’on traduirait par « sous-chaîne). Vous pouvez décider d’effectuer votre recherche sur l’intégralité de la Python String concernée, ou sur une partie de celle-ci uniquement.

Python String index : syntaxe et fonctionnement

La syntaxe de la méthode « index » est simple à expliquer. Vous pouvez appeler cette méthode avec un, deux ou trois arguments, en sachant que les deux derniers sont facultatifs. Le premier argument correspond forcément à la Substring en fonction de laquelle la chaîne de caractères doit être analysée. Les deux arguments facultatifs représentent les index à partir desquels la recherche doit être lancée ou arrêtée. Ceux-ci doivent uniquement être transmis si seule une certaine partie de la String doit être examinée en fonction de la sous-chaîne. Vous trouverez ci-dessous une section de code qui illustre la syntaxe de cette méthode.

string.index(substring)
string.index(substring, start, end)
Python

Dans cet exemple, « string » désigne une chaîne de caractères quelconque, tandis que « substring » correspond à la sous-chaîne à rechercher. « start » et « end »indiquent respectivement les index de début et de fin de la recherche. Si aucun index de fin n’est précisé (pour un total de deux arguments uniquement), la recherche est simplement effectuée jusqu’à la fin de la String. La méthode renvoie alors l’index de la première occurrence de la Substring en tant que valeur de retour. De cette manière, si une Substring apparaît plusieurs fois, « index() » va ignorer toutes les occurrences hormis la première.

L’exemple ci-dessous permet lui aussi d’illustrer le fonctionnement de la méthode :

string = "Je suis une chaîne de caractères"
print(string.index("chaîne"))
print(string.index("suis"))
# Résultat : 3 (le "suis" dans "Je suis")
print(string.index("suis", 7, len(string) - 1))
# Résultat : 3 (le "suis" dans "Je suis")
print(string.index("suis", 7))
# Résultat : 3 (le "suis" dans "Je suis")
print(string.index("Python"))
# Erreur d'exception : ValueError
Python

Comme vous pouvez le voir dans l’exemple ci-dessus, lorsque la méthode « index() » est appelée pour la deuxième fois, seul le premier index « suis » est renvoyé pour « Je suis ». Toutes les autres occurrences de « suis » sont ignorées. En ce qui concerne le dernier appel de la méthode « index() », vous pouvez voir que celle-ci renvoie une expression « ValueError » si elle ne trouve pas la sous-chaîne concernée. Une telle exception est également renvoyée si vous renseignez des index négatifs, ou encore si l’index « start » est supérieur à l’index « end ». Si l’un de ces cas peut potentiellement se présenter dans votre programme, vous devez alors traiter l’exception en conséquence.

Conseil

Le traitement des Strings est une mission qui revient souvent dans le cadre de la programmation Python. Ainsi, il est important d’enregistrer et d’éditer les Strings dans un format qui soit approprié. Consultez notre article consacré au Python String Format pour découvrir comment adapter le format de vos Strings en fonction de vos besoins.

Autre solution : la méthode find

En fonction de votre utilisation de la méthode index, la méthode find pourrait éventuellement constituer un choix plus judicieux. Elle est presque identique à la méthode index, à un détail près (mais celui-ci a son importance) : si la sous-chaîne en question n’est pas identifiée, aucune exception ne se déclenche. Au lieu de cela, la méthode se contente de renvoyer la valeur « -1 ». Étant donné qu’une exception non traitée pourrait causer une panne au niveau de votre programme, cette méthode pourrait s’avérer très avantageuse pour vous si vous n’êtes pas en mesure de traiter une éventuelle exception ou si vous ne le souhaitez tout simplement pas. Vous pouvez même simuler le traitement de l’exception à l’aide d’une condition if, comme le montre l’exemple ci-dessous :

string = "Python"
if(string.find("Py") != -1):
    print("Sous-chaîne présente ! Index : ", string.find("Py"))
else:
    print("Sous-chaîse non présente !")
Python

Dans cet exemple, une jonction est possible si aucune Substring n’est trouvée (exactement comme pour le traitement d’une exception), la principale différence étant que dans cet exemple, il convient d’exécuter plusieurs fois la méthode « find() » si la sous-chaîne vient à être identifiée.

Conseil

Au regard des langages de programmation disponibles à ce jour, Python compte parmi les plus flexibles. Il vous permet donc d’effectuer d’innombrables opérations sur les Strings. Pour en savoir plus, découvrez notre article sur les différentes façons de comparer des Strings avec Python.

Python String index : exemples

À présent, découvrez avec nous deux exemples illustrant la manière dont la méthode « index() » peut être utilisée dans un programme. Commençons par un exemple simple avant d’en voir un autre, un peu plus complexe.

string = "Les chaussettes de l'archiduchesse sont-elles sèches, archi-sèches ?"
print("La chaîne de caractères à vérifier est ", string)
while(True):
    sub = input("Entrez la sous-chaîne : ")
    try:
        print("L‘index est : ", string.index(sub))
    except:
        print("La sous-chaîne n'est pas présente :/")
Python

Dans cet exemple, une sous-chaîne est recherchée au sein d’une chaîne de caractères. Le code indique ensuite si la Substring apparaît dans la String en question et, le cas échéant, à quel index elle se trouve. Dans un tel cas, la String devant être analysée est prédéfinie, alors que la Substring est chaque fois renseignée par l’utilisateur.

def try_except(start):
    try:
        return string.index(sub, start)
    except:
        return -1
string = input("Entrez la chaîne de caractères : ")
sub = input("Entrez la chaîne de caractères : ")
occurences = 0
start = 0
while(try_except(start) != -1):
    start = try_except(start) + len(sub)
    occurences = occurences + 1
print("Occurences : ", occurences)
Python

Cet exemple illustre la vérification de l’occurrence ou des occurrences d’une Substring au sein d’une chaîne de caractères renseignée par l’utilisateur. Si une occurrence de la sous-chaîne est identifiée dans la String, le nombre d’occurrences est alors incrémenté, puis la recherche est relancée à partir de ce point. Une fois la fin de la String atteinte, le nombre total d’occurrences s’affiche et le programme prend fin.

Conseil

Vous cherchez une solution pour publier votre application Web de façon rapide et facile ? Alors Deploy Now est vraiment la plateforme IONOS qu’il vous faut !