Comment utiliser la méthode split () en Python

Dans ce didacticiel, vous apprendrez à utiliser la méthode split() de Python pour diviser une chaîne en une liste de chaînes.

Lorsque vous travaillez avec des chaînes Python, vous pouvez utiliser plusieurs méthodes de chaîne intégrées pour obtenir des copies modifiées de chaînes, telles que la conversion en majuscules, le tri d’une chaîne, etc. Une de ces méthodes est .split() qui divise une chaîne Python en une liste de chaînes, et nous en apprendrons plus à ce sujet en codant des exemples.

À la fin du didacticiel, vous aurez appris ce qui suit :

  • comment fonctionne la méthode .split()
  • comment personnaliser le fractionnement à l’aide des paramètres sep et maxsplit

Commençons!

Syntaxe de la méthode split() en Python

Voici la syntaxe générale pour utiliser la méthode Python split() sur n’importe quelle chaîne valide :

string.split(sep, maxsplit)

# Parameters:
sep, maxsplit

# Returns:
A list of strings

Ici, string peut être n’importe quelle chaîne Python valide.

Les paramètres sep et maxsplit sont facultatifs.

  • sep indique le séparateur sur lequel vous souhaitez diviser la chaîne. Il doit être spécifié sous forme de chaîne.
  • maxsplit est un entier qui spécifie combien de fois vous voulez diviser la chaîne.

Leurs valeurs par défaut sont utilisées lorsque vous ne fournissez pas de paramètres facultatifs.

  • Lorsque vous ne fournissez pas explicitement la valeur sep, un espace blanc est utilisé comme séparateur par défaut.
  • Lorsque vous ne spécifiez pas la valeur de maxsplit, la valeur par défaut est -1, ce qui signifie que la chaîne sera divisée sur toutes les occurrences du séparateur.

Formuler la syntaxe en langage clair :

La méthode split() divise une chaîne maxsplit nombre de fois sur l’occurrence du séparateur spécifié par le paramètre sep.

Maintenant que nous avons appris la syntaxe de la méthode Python split(), continuons à coder quelques exemples.

Diviser une chaîne Python en une liste de chaînes

Si tu as Python 3 installé sur votre machine, vous pouvez coder avec ce didacticiel en exécutant les extraits de code suivants dans un REPL Python.

Pour démarrer le REPL, exécutez l’une des commandes suivantes depuis le terminal :

$ python
$ python -i

▶️ Vous pouvez également essayer ces exemples sur l’éditeur Python de toptips.fr.

Dans cet exemple, py_str est une chaîne Python. Appelons la méthode .split() sur py_str sans aucun paramètre et observons la sortie.

py_str = "Learn how to use split() in Python"
py_str.split()

# Output
['Learn', 'how', 'to', 'use', 'split()', 'in', 'Python']

Comme vu ci-dessus, la chaîne est divisée sur toutes les occurrences d’espaces.

Fractionner une chaîne Python sur l’occurrence de séparateurs

#1. Comme premier exemple, divisons la chaîne py_str avec des traits de soulignement doubles (__) comme séparateur.

py_str = "All__the__best"
py_str.split(sep='__')

# Output
['All', 'the', 'best']

#2. Prenons un autre exemple. Ici, py_str a trois phrases, chacune terminée par un point (.).

py_str = "I love coding. Python is cool. I'm learning Python in 2022"
py_str.split(sep='.')

# Output
['I love coding', ' Python is cool', " I'm learning Python in 2022"]

▶️ Lorsque nous appelons la méthode .split() sur cette chaîne, avec ‘.’ comme séparateur, la liste résultante a trois phrases, comme on le voit dans la cellule de code ci-dessus.

#3. Posons-nous quelques questions :

  • Que se passe-t-il lorsque le séparateur n’apparaît jamais dans la chaîne ?
  • Comment la scission se produira-t-elle dans ce cas ?

Voici un exemple :

Nous essayons de diviser py_str lors de l’apparition d’un astérisque

py_str = "This line contains no asterisk."
py_str.split(sep='*')

# Output
['This line contains no asterisk.']

— qui ne se produit pas.

Comme aucune division ne peut être effectuée dans ce cas, la liste résultante contient la chaîne entière.

Dans la section suivante, nous verrons comment utiliser la méthode split() sur le contenu d’un fichier texte.

Fractionner le contenu d’un fichier Python

Lorsque vous travaillez avec des fichiers texte en Python, vous devrez peut-être fractionner le contenu du fichier, en fonction d’un séparateur, pour faciliter le traitement.

Voici un exemple de fichier texte :

with open('sample.txt') as f:
  content = f.read()
  str_list= content.split(sep='...')
  for string in str_list:
    print(string,end='')

L’extrait de code ci-dessous montre comment utiliser la division sur le contenu de l’exemple de fichier texte.

  • Le code ci-dessus effectue les opérations suivantes :
  • Utilise le gestionnaire de contexte with pour ouvrir et travailler avec le fichier texte ‘sample.txt’.
  • Lit le contenu du fichier à l’aide de la méthode .read() sur l’objet fichier f.
  • Divise le contenu à l’occurrence des points de suspension du séparateur (…) en une liste str_list.

Boucle sur str_list pour accéder à chaque chaîne et l’imprime.

# Output
This is a sample text file
It contains info on
Getting started with <a href="https://toptips.fr.com/pcap-certification/">programming in Python</a>
According to the 2022 StackOverflow Developer Survey
Python is one of the most-loved programming languages
So what are you waiting for? Start learning!

Voici la sortie.

En guise d’exercice, vous pouvez essayer de fractionner le contenu d’un fichier texte sur n’importe quel séparateur de votre choix.

Diviser une chaîne Python en morceaux

Lorsque vous divisez une chaîne une fois, vous obtenez deux morceaux ; en le divisant deux fois, vous en obtiendrez trois.

📋 En général, lorsque vous divisez une chaîne K fois, vous obtenez K + 1 morceaux.

Ceci est illustré ci-dessous.

Comment fonctionne le paramètre maxsplit (Image de l’auteur)

py_str = "Chunk#1  I'm a larger chunk, Chunk#2"
py_str.split(maxsplit=1)

# Output
['Chunk#1', "I'm a larger chunk, Chunk#2"]

#1. Nous définissons maxsplit égal à 1. Nous n’avons pas spécifié de séparateur, donc la séparation se produira sur les espaces blancs par défaut.

Même si le deuxième bloc de la liste contient des espaces, la division ne se produit pas car la division est maintenant contrôlée par la valeur maxsplit de un.

py_str = "Chunk#1 Chunk#2 I'm one large Chunk#3, even though I contain whitespaces"
py_str.split(maxsplit=2)

# Output
['Chunk#1',
 'Chunk#2',
 "I'm one large Chunk#3, even though I contain whitespaces"]

#2. Augmentons la valeur maxsplit à 2 et observons comment la division se produit pour l’exemple suivant.

Comme dans l’exemple précédent, la valeur maxsplit détermine le nombre de divisions effectuées. Nous obtenons trois morceaux, séparés après les première et deuxième occurrences des espaces.

#3. Que se passe-t-il si vous définissez maxsplit sur une valeur supérieure au nombre d’occurrences du séparateur ?

py_str = "There, are, only, 4, commas"
py_str.split(maxsplit=8)

# Output
['There,', 'are,', 'only,', '4,', 'commas']

Dans la cellule de code suivante, nous définissons maxsplit sur 8 lorsque la chaîne ne contient que quatre virgules.

Ici, la méthode split divise py_str sur les quatre occurrences d’une virgule. Même si vous essayez de définir maxsplit sur une valeur inférieure à -1, par exemple -7, la division sera effectuée sur toutes les occurrences du séparateur.

Ensuite, rassemblons tout ce que nous avons appris et utilisons les deux paramètres sep maxsplit.

Diviser une chaîne Python en morceaux sur un séparateur

py_str = "Chunk#1, Chunk#2, I'm one large Chunk#3, even though I contain a ,"
py_str.split(sep = ',',maxsplit=2)

# Output
['Chunk#1', ' Chunk#2', " I'm one large Chunk#3, even though I contain a ,"]

#1. Supposons que nous ayons besoin de diviser la chaîne py_str en trois morceaux lors de l’occurrence de la virgule (,). Pour ce faire, nous pouvons définir la valeur sep sur ‘,’ et la valeur maxsplit sur 2 dans l’appel de méthode.

Comme on le voit dans la sortie, le fractionnement se produit deux fois sur les deux premières occurrences du séparateur.

#2. Le séparateur sep ne doit pas toujours être un caractère spécial. Il peut s’agir d’une séquence de caractères spéciaux, comme les doubles traits de soulignement que nous avons utilisés précédemment, ou il peut même s’agir d’une sous-chaîne.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=2)

# Output
['You need to ', ' data structures, ', ' algorithms, and learn more!']

Définissons la chaîne ‘learn’ comme argument sep et voyons comment la division se produit pour des valeurs variables de maxsplit. Ici, nous avons défini maxsplit sur 2.

py_str = "You need to learn data structures, learn algorithms, and learn more!"
py_str.split(sep = 'learn',maxsplit=-1)

# Output
['You need to ', ' data structures, ', ' algorithms, and ', ' more!']

#3. Si vous souhaitez diviser py_str sur toutes les occurrences de la chaîne ‘learn’, nous pouvons appeler cette méthode .split() en définissant sep = ‘learn’—sans le paramètre maxsplit. Cela équivaut à définir explicitement la valeur maxsplit sur -1, comme indiqué dans la cellule de code ci-dessous.

Nous voyons que la scission se produit dans toutes les occurrences de ‘learn’.

Emballer

J’espère que vous avez maintenant compris comment utiliser la méthode .split() avec les chaînes Python.

  • Voici un résumé de ce tutoriel :
  • La méthode intégrée .split() de Python divise une chaîne en une liste de chaînes.
  • Utilisez string.split() pour diviser la chaîne sur toutes les occurrences du séparateur par défaut, les espaces.

Utilisez string.split(sep,maxsplit) pour diviser la chaîne maxsplit nombre de fois lors de l’occurrence du séparateur sep. La liste résultante contient maxsplit+1 éléments.

Dans une prochaine étape, vous pouvez apprendre à vérifier si les chaînes Python sont des palindromes ou des anagrammes.