Ce guide vous initie à l’utilisation de la méthode `split()` en Python pour transformer une chaîne de caractères en une liste de sous-chaînes.
Lorsque vous manipulez des chaînes de caractères en Python, diverses méthodes intégrées vous permettent d’obtenir des versions modifiées, comme la mise en majuscules ou le tri. Parmi celles-ci, `.split()` découpe une chaîne en une liste de sous-chaînes. Nous allons explorer cette méthode à travers des exemples concrets.
À la fin de ce tutoriel, vous aurez assimilé les points suivants :
- Le fonctionnement précis de la méthode `.split()`.
- La personnalisation du découpage à l’aide des paramètres `sep` et `maxsplit`.
Commençons sans plus tarder !
Syntaxe de la méthode `split()` en Python
Voici comment utiliser la méthode `split()` sur une chaîne de caractères en Python :
chaine.split(sep, maxsplit)
# Paramètres:
sep, maxsplit
# Retour:
Une liste de chaînes
Ici, `chaine` représente n’importe quelle chaîne de caractères Python.
Les paramètres `sep` et `maxsplit` sont facultatifs.
- `sep` définit le séparateur à utiliser pour la découpe. Il doit être spécifié sous forme de chaîne de caractères.
- `maxsplit` est un entier indiquant le nombre maximal de découpes à effectuer.
Des valeurs par défaut sont utilisées si vous ne spécifiez pas ces paramètres optionnels.
- Si vous n’indiquez pas `sep`, la méthode utilise un espace comme séparateur par défaut.
- Si vous n’indiquez pas `maxsplit`, la valeur par défaut est -1, ce qui signifie que la chaîne sera divisée à chaque occurrence du séparateur.
En termes simples :
La méthode `split()` divise une chaîne en un nombre maximal de sous-chaînes spécifié par `maxsplit`, en utilisant le séparateur défini par `sep`.
Maintenant que vous connaissez la syntaxe, passons à quelques exemples pratiques.
Conversion d’une chaîne en liste de chaînes
Si Python 3 est installé sur votre ordinateur, vous pouvez tester les exemples suivants en utilisant un interpréteur Python.
Pour lancer l’interpréteur, tapez l’une de ces commandes dans votre terminal :
$ python
$ python -i
▶️ Vous pouvez également exécuter ces exemples directement dans l’éditeur Python de toptips.fr.
Dans cet exemple, `ma_chaine` est une chaîne Python. Appliquons la méthode `.split()` sans paramètres pour voir le résultat.
ma_chaine = "Apprendre à utiliser split() en Python"
ma_chaine.split()
# Sortie
['Apprendre', 'à', 'utiliser', 'split()', 'en', 'Python']
Comme vous pouvez le voir, la chaîne a été divisée en utilisant chaque espace comme séparateur.
Découpage d’une chaîne selon un séparateur
#1. Prenons l’exemple de la découpe de la chaîne `ma_chaine` en utilisant des doubles tirets bas (`__`) comme séparateur.
ma_chaine = "Tout__le__meilleur"
ma_chaine.split(sep='__')
# Sortie
['Tout', 'le', 'meilleur']
#2. Voici un autre exemple. La chaîne `ma_chaine` contient trois phrases, chacune se terminant par un point (`.`).
ma_chaine = "J'aime coder. Python est génial. J'apprends Python en 2022"
ma_chaine.split(sep='.')
# Sortie
["J'aime coder", ' Python est génial', " J'apprends Python en 2022"]
▶️ En utilisant `.` comme séparateur, la liste résultante contient trois phrases.
#3. Posons-nous les questions suivantes :
- Que se passe-t-il si le séparateur n’apparaît jamais dans la chaîne ?
- Comment la découpe est-elle gérée dans ce cas ?
Voici un exemple :
Nous essayons de découper `ma_chaine` en utilisant l’astérisque comme séparateur.
ma_chaine = "Cette ligne ne contient pas d'astérisque."
ma_chaine.split(sep='*')
# Sortie
["Cette ligne ne contient pas d'astérisque."]
L’astérisque est absent de la chaîne.
Puisque la chaîne n’a pu être divisée, la liste résultante contient la chaîne entière.
Dans la partie suivante, nous allons examiner comment utiliser la méthode `split()` sur le contenu d’un fichier texte.
Découpage du contenu d’un fichier Python
Lorsque vous manipulez des fichiers texte en Python, vous pourriez avoir besoin de découper le contenu en fonction d’un séparateur afin de faciliter le traitement.
Voici un exemple de fichier texte :
with open('exemple.txt') as f:
contenu = f.read()
liste_str = contenu.split(sep='...')
for chaine in liste_str:
print(chaine,end='')
L’extrait de code suivant illustre comment effectuer une découpe sur le contenu d’un fichier texte.
- Ce code réalise les actions suivantes :
- Utilise le gestionnaire de contexte `with` pour ouvrir et travailler avec le fichier `exemple.txt`.
- Lit le contenu du fichier à l’aide de la méthode `.read()` sur l’objet fichier `f`.
- Divise le contenu en une liste `liste_str` en utilisant `…` comme séparateur.
Parcourt la liste `liste_str` pour accéder à chaque chaîne et l’affiche.
# Sortie
Ceci est un exemple de fichier texte
Il contient des informations sur
Comment commencer la <a href="https://toptips.fr.com/pcap-certification/">programmation en Python</a>
Selon l'enquête StackOverflow Developer 2022
Python est l'un des langages de programmation les plus appréciés
Alors, qu'attendez-vous ? Commencez à apprendre !
Voici le résultat.
En guise d’exercice, essayez de diviser le contenu d’un fichier texte en utilisant le séparateur de votre choix.
Découpe d’une chaîne en fragments
Lorsque vous divisez une chaîne une fois, vous obtenez deux fragments ; deux fois, vous en aurez trois.
📋 En général, si vous divisez une chaîne K fois, vous obtenez K + 1 fragments.
Ceci est illustré ci-dessous.
Fonctionnement du paramètre `maxsplit` (Image de l’auteur)
ma_chaine = "Fragment#1 Je suis un plus grand fragment, Fragment#2"
ma_chaine.split(maxsplit=1)
# Sortie
['Fragment#1', "Je suis un plus grand fragment, Fragment#2"]
#1. Nous définissons `maxsplit` à 1. Puisque nous n’avons pas spécifié de séparateur, le découpage se fait en utilisant les espaces comme séparateur par défaut.
Même si le second fragment contient des espaces, la division n’a pas lieu car le découpage est contrôlé par la valeur `maxsplit` de 1.
ma_chaine = "Fragment#1 Fragment#2 Je suis un grand Fragment#3, même si je contiens des espaces"
ma_chaine.split(maxsplit=2)
# Sortie
['Fragment#1',
'Fragment#2',
"Je suis un grand Fragment#3, même si je contiens des espaces"]
#2. Augmentons la valeur de `maxsplit` à 2 et regardons le découpage qui en résulte.
Comme dans l’exemple précédent, la valeur `maxsplit` détermine le nombre de découpes effectuées. Nous obtenons trois fragments, séparés après la première et deuxième occurrences d’espaces.
#3. Que se passe-t-il si vous donnez à `maxsplit` une valeur supérieure au nombre d’occurrences du séparateur ?
ma_chaine = "Il, y, a, seulement, 4, virgules"
ma_chaine.split(maxsplit=8)
# Sortie
['Il,', 'y,', 'a,', 'seulement,', '4,', 'virgules']
Dans le code suivant, nous définissons `maxsplit` à 8 alors que la chaîne contient seulement 4 virgules.
Ici, la méthode `split` découpe `ma_chaine` aux quatre occurrences de virgule. Même si vous essayez de définir `maxsplit` avec une valeur inférieure à -1, comme par exemple -7, la découpe sera effectuée sur toutes les occurrences du séparateur.
Passons à présent à l’utilisation conjointe des deux paramètres, `sep` et `maxsplit`.
Découpage d’une chaîne sur un séparateur avec un nombre limité de découpes
ma_chaine = "Fragment#1, Fragment#2, Je suis un grand Fragment#3, même si je contiens une ,"
ma_chaine.split(sep = ',',maxsplit=2)
# Sortie
['Fragment#1', ' Fragment#2', " Je suis un grand Fragment#3, même si je contiens une ,"]
#1. Supposons que nous voulions diviser `ma_chaine` en trois fragments en utilisant la virgule comme séparateur. Pour ce faire, nous pouvons définir la valeur de `sep` à `,` et celle de `maxsplit` à 2 lors de l’appel de la méthode.
Comme le montre la sortie, la découpe s’effectue deux fois, lors des deux premières occurrences du séparateur.
#2. Le séparateur `sep` n’a pas besoin d’être un seul caractère. Cela peut être une séquence de caractères spéciaux, comme les doubles tirets bas que nous avons utilisés plus tôt, ou même une sous-chaîne.
ma_chaine = "Vous devez apprendre les structures de données, apprendre les algorithmes et apprendre plus !"
ma_chaine.split(sep = 'apprendre',maxsplit=2)
# Sortie
['Vous devez ', ' les structures de données, ', ' les algorithmes et apprendre plus !']
Définissons la chaîne `apprendre` comme argument `sep` et observons l’effet de différentes valeurs de `maxsplit`. Ici, nous avons défini `maxsplit` à 2.
ma_chaine = "Vous devez apprendre les structures de données, apprendre les algorithmes et apprendre plus !"
ma_chaine.split(sep = 'apprendre',maxsplit=-1)
# Sortie
['Vous devez ', ' les structures de données, ', ' les algorithmes et ', ' plus !']
#3. Si vous désirez découper `ma_chaine` en utilisant chaque occurrence de la chaîne `apprendre`, vous pouvez appeler la méthode `.split()` avec `sep = ‘apprendre’` — sans le paramètre `maxsplit`. Ceci équivaut à définir explicitement `maxsplit` à -1, comme illustré dans l’exemple ci-dessous.
On remarque que la découpe se produit à chaque occurrence de `apprendre`.
En résumé
J’espère que vous avez maintenant une bonne compréhension de l’utilisation de la méthode `.split()` avec les chaînes de caractères en Python.
- Voici un récapitulatif de ce tutoriel :
- La méthode intégrée `.split()` en Python divise une chaîne en une liste de sous-chaînes.
- Utilisez `chaine.split()` pour découper la chaîne à chaque occurrence du séparateur par défaut, l’espace.
Utilisez `chaine.split(sep,maxsplit)` pour découper la chaîne `maxsplit` fois à chaque occurrence du séparateur `sep`. La liste résultante contiendra `maxsplit + 1` éléments.
Pour aller plus loin, vous pouvez étudier comment vérifier si des chaînes de caractères Python sont des palindromes ou des anagrammes.