Skip to main content

Opérations sur les sous-chaînes en Python

Substring Operations in Python

Une sous-chaîne est une séquence de caractères qui fait partie d'une chaîne de caractères plus grande. Il s'agit d'une séquence contiguë de caractères à l'intérieur d'une chaîne, qui peut être extraite ou manipulée indépendamment.

Par exemple, dans la chaîne "Hello, World!", les sous-chaînes "Hello", "World" et "!" sont toutes des sous-chaînes de la chaîne originale.

Revoyons les opérations et méthodes les plus courantes liées à la sous-chaîne.

Découpage de Chaîne

Le découpage de chaîne est le processus de création d'une nouvelle sous-chaîne à partir d'une chaîne existante en Python. Vous pouvez découper une chaîne en utilisant la syntaxe [start:end] pour extraire une portion de la chaîne qui commence à l'indice start et se termine à l'indice end (non inclusif). Voici quelques exemples :

my_string = "Hello, world!"

# Get the substring from index 0 to index 4 (not inclusive)
print(my_string[0:4])  # Output: "Hell"

# Get the substring from index 7 to the end of the string
print(my_string[7:])  # Output: "world!"

# Get the substring from index 2 to index 8 (not inclusive) with a step of 2
print(my_string[2:8:2])  # Output: "lo,"

# Get the substring from index 2 to the second-to-last character
print(my_string[2:-1])  # Output: "llo, world"

Dans le premier exemple, nous utilisons le découpage pour extraire la sous-chaîne "Hell" de la variable my_string en spécifiant l'index de départ 0 et l'index de fin 4 (non inclus).

Dans le deuxième exemple, nous utilisons le découpage pour extraire la sous-chaîne "world!" de la variable my_string en spécifiant seulement l'index de départ 7 et en laissant l'index de fin vide. Cela indique à Python d'extraire la sous-chaîne de l'index de départ jusqu'à la fin de la chaîne.

Dans le troisième exemple, nous utilisons le découpage pour extraire un caractère sur deux de la sous-chaîne "lo, ". Nous faisons cela en spécifiant l'index de départ 2, l'index de fin 8 (non inclus) et un pas de 2.

Dans le quatrième exemple, nous utilisons le découpage pour extraire la sous-chaîne "llo, world" de la variable my_string en spécifiant l'index de départ 2 et l'index de fin -1. Le -1 spécifie l'avant-dernier caractère de la chaîne comme index de fin.

Pour diviser une chaîne sur un délimiteur, vous pouvez également utiliser la méthode split(). Cette méthode prend un argument, qui est le caractère ou la chaîne de caractères délimiteur que vous souhaitez utiliser pour diviser la chaîne. Voici un exemple :

my_string = "Hello,world"
my_list = my_string.split(",")
print(my_list) # Output: ['Hello', 'world']

Vous pouvez supprimer le premier caractère d'une chaîne en Python en utilisant le découpage de chaîne. Voici un exemple :

string = "hello"
new_string = string[1:]
print(new_string) # Output: ello

Le découpage de chaîne peut également être utilisé pour supprimer le dernier caractère d'une chaîne. Voici un exemple :

my_string = "Hello World!"
new_string = my_string[:-1]
print(new_string)  # Output: "Hello World"

Sous-chaîne de caractères

Pour vérifier si une chaîne Python contient une sous-chaîne spécifique, vous pouvez utiliser le mot-clé in ou la méthode find().

Voici un exemple en utilisant le mot-clé in :

my_string = "Hello, world!"
if "world" in my_string:
    print("Substring found!")
else:
    print("Substring not found.")
# Output: Substring found!

Voici un exemple utilisant la méthode find() :

my_string = "Hello, world!"
if my_string.find("world") != -1:
    print("Substring found!")
else:
    print("Substring not found.")
# Output: Substring found!

Dans les deux exemples, nous vérifions si la sous-chaîne "world" est présente dans la chaîne my_string. Si la sous-chaîne est trouvée, nous imprimons "Sous-chaîne trouvée !", sinon nous imprimons "Sous-chaîne non trouvée.".

Inversion de Chaîne

Il y a plusieurs façons d'inverser une chaîne en Python.

Voyons comment inverser une chaîne en python avec des exemples :

  • En utilisant le slicing :
string = "hello"
reversed_string = string[::-1]
print(reversed_string)  # Output: "olleh"
  • En utilisant une boucle :
string = "hello"
reversed_string = ""
for char in string:
    reversed_string = char + reversed_string
print(reversed_string)  # Output: "olleh"
  • Utiliser la fonction reversed() :
string = "hello"
reversed_string = "".join(reversed(string))
print(reversed_string)  # Output: "olleh"

Toutes ces méthodes produiront le même résultat, qui est la version inversée de la chaîne originale.

Les méthodes startswith() et endswith()

En Python, startswith() et endswith() sont deux méthodes de chaîne qui sont utilisées pour vérifier si une chaîne commence ou se termine par un préfixe ou un suffixe spécifique, respectivement. Voici un aperçu de ces méthodes :

La méthode startswith() est utilisée pour vérifier si une chaîne commence par un préfixe spécifique. La méthode prend un ou plusieurs préfixes comme argument et retourne True si la chaîne commence par l'un d'eux, et False sinon. Voici la syntaxe pour la méthode startswith():

string.startswith(prefix, start=0, end=len(string))

où :

  • prefix est le préfixe à vérifier.
  • start est un paramètre optionnel qui spécifie l'indice de début de la chaîne à rechercher. Par défaut, start est défini à 0, ce qui signifie que toute la chaîne sera recherchée.
  • end est un paramètre optionnel qui spécifie l'indice de fin de la chaîne à rechercher. Par défaut, end est défini à la longueur de la chaîne.

Voici un exemple d'utilisation de la méthode startswith() :

s = "Python is a great programming language"
print(s.startswith("Python"))  # True
print(s.startswith("Java"))    # False
print(s.startswith(("Java", "Python")))  # True (checking multiple prefixes)

La méthode endswith() est utilisée pour vérifier si une chaîne se termine par un suffixe spécifique. La méthode prend un ou plusieurs suffixes comme argument et renvoie True si la chaîne se termine par l'un d'eux, et False dans le cas contraire. Voici la syntaxe pour la méthode endswith() :

string.endswith(suffix, start=0, end=len(string))

où:

  • suffix est le suffixe à vérifier.
  • les paramètres start et end ont la même signification que dans la méthode startswith().

Voici un exemple d'utilisation de la méthode endswith() :

s = "Python is a great programming language"
print(s.endswith("language"))  # True
print(s.endswith("Python"))    # False
print(s.endswith(("Python", "language")))  # True (checking multiple suffixes)

Dans les deux méthodes, vous pouvez passer un tuple de préfixes ou de suffixes pour vérifier plusieurs possibilités. Les paramètres start et end sont optionnels et peuvent être utilisés pour rechercher seulement une partie de la chaîne.

La méthode split()

C'est aussi une méthode intégrée en Python qui est utilisée pour diviser et analyser une chaîne en une liste de sous-chaînes basée sur un séparateur spécifié. Par défaut, le séparateur utilisé est l'espace blanc.

Voici un exemple :

s = "Hello World! How are you?"

words = s.split()

print(words)   # Output: ['Hello', 'World!', 'How', 'are', 'you?']

Dans l'exemple ci-dessus, la méthode split() est appelée sur la chaîne de caractères s, qui contient des mots séparés par des espaces. La liste résultante words contient tous les mots de la chaîne originale en tant qu'éléments séparés.

Vous pouvez également spécifier un séparateur différent en utilisant la méthode split(). Par exemple :

s = "mango,pineapple,banana"

fruits = s.split(",")

print(fruits)   # Output: ['mango', 'pineapple', 'banana']

Dans cet exemple, la méthode split() est appelée sur la chaîne de caractères s, qui contient des noms de fruits séparés par des virgules. La liste résultante fruits contient tous les noms de fruits en tant qu'éléments séparés, avec la virgule utilisée comme séparateur.

La fonction string.find()

C'est une fonction intégrée de Python qui retourne l'indice de la première occurrence d'une sous-chaîne au sein d'une chaîne donnée. Si la sous-chaîne n'est pas trouvée, elle retourne -1. La syntaxe pour utiliser string.find() est comme suit :

string.find(substring, start=0, end=len(string))

string est la chaîne dans laquelle effectuer la recherche, substring est la chaîne à rechercher, start est l'indice de début de la recherche (par défaut c'est 0), et end est l'indice de fin de la recherche (par défaut c'est la longueur de la chaîne).

Voici un exemple :

sentence = "The quick brown fox jumps over the lazy dog"
print(sentence.find("fox"))   # Output: 16
print(sentence.find("cat"))   # Output: -1

Dans la première ligne, nous définissons une chaîne de caractères sentence. Ensuite, nous utilisons la fonction find() pour rechercher la sous-chaîne "fox" dans la chaîne sentence. Puisque "fox" est trouvé à l'indice 16 dans la chaîne sentence, la fonction find() retourne 16. Dans la deuxième ligne, nous recherchons la sous-chaîne "cat", qui n'est pas trouvée dans la chaîne sentence, donc la fonction find() retourne -1.

La méthode replace()

En Python, les chaînes de caractères sont immuables, ce qui signifie que vous ne pouvez pas modifier une chaîne une fois qu'elle a été créée. Cependant, vous pouvez créer une nouvelle chaîne qui contient une version modifiée de la chaîne originale.

Pour supprimer un caractère spécifique ou une sous-chaîne d'une chaîne en Python, vous pouvez utiliser la méthode replace() ou le découpage de chaîne.

Voici un exemple d'utilisation de la méthode replace() pour supprimer un caractère spécifique :

my_string = "Hello, World!"
new_string = my_string.replace("o", "")
print(new_string) # Output: Hell, Wrld!

Ici, nous avons remplacé le caractère "o" par une chaîne vide, le supprimant ainsi efficacement de la chaîne d'origine.

Troncature de Chaîne

Vous pouvez tronquer une chaîne en spécifiant la longueur maximale de la chaîne que vous souhaitez conserver.

Voici un exemple :

text = "This is a long text that needs to be truncated."
max_length = 20
truncated_text = text[:max_length] + "..." if len(text) > max_length else text
print(truncated_text) # Output: This is a long text...

Dans cet exemple, nous commençons par définir une chaîne text que nous souhaitons tronquer. Nous spécifions également la longueur maximale de la chaîne tronquée à l'aide de la variable max_length.

Nous utilisons ensuite le découpage pour obtenir les premiers caractères max_length de la chaîne. Si la longueur de la chaîne originale est supérieure à max_length, nous ajoutons une ellipse à la fin de la chaîne tronquée en utilisant la concaténation de chaînes. Si la longueur de la chaîne originale est inférieure ou égale à max_length, nous attribuons simplement la chaîne originale à la variable truncated_text.

Enfin, nous imprimons la chaîne tronquée en utilisant la fonction print().

La méthode count()

Vous pouvez utiliser la méthode intégrée count pour compter le nombre d'occurrences d'une sous-chaîne dans une chaîne.

Voici un compteur de sous-chaîne "is" :

string = "Hello, world! This is a sample string."
substring = "is"

count = string.count(substring)

print(count) # Output: 2

Dans cet exemple, nous avons une chaîne "Hello, world! This is a sample string." et nous souhaitons compter le nombre d'occurrences de la sous-chaîne "is". Nous utilisons la méthode count pour compter le nombre de fois que la sous-chaîne apparaît dans la chaîne.

Le résultat de ce programme sera 2, car la sous-chaîne "is" apparaît deux fois dans la chaîne.

Contribuez avec nous!

N'hésitez pas à contribuer aux tutoriels Python sur GitHub : créez un fork, mettez à jour le contenu et émettez une pull request.

Profile picture for user almargit
Python developer, content manager.
Profile picture for user AliaksandrSumich
Aliaksandr Sumichcontributeur
Mise à jour : 03/05/2024 - 22:50
Profile picture for user angarsky
Examiné et approuvé