Découper une chaîne par lignes avec splitlines() en Python

1. À propos de splitlines() en Python

En Python, la méthode splitlines() permet de découper une chaîne de caractères en lignes. Elle retourne une liste dans laquelle chaque élément correspond à une ligne du texte.

Cette méthode est particulièrement utile pour manipuler des textes multilignes, analyser le contenu d'un fichier, traiter une réponse textuelle ou parcourir séparément les différentes lignes d'une chaîne.

Dans l'exemple suivant, la chaîne contient trois lignes séparées par le caractère de saut de ligne \n. splitlines() transforme ces trois lignes en éléments d'une liste.

Sortie :

Comme les chaînes Python sont immuables, splitlines() ne modifie pas la chaîne originale. Elle crée et renvoie une nouvelle liste.

Le programme suivant permet de vérifier que la chaîne originale reste inchangée après l'utilisation de splitlines().

Sortie :

2. Découper une chaîne en lignes avec splitlines()

La méthode splitlines() s'utilise directement sur une chaîne de caractères. Par défaut, les séparateurs de lignes sont retirés du résultat.

Dans l'exemple suivant, les trois lignes deviennent trois éléments distincts de la liste.

Sortie :

La fonction len() peut ensuite être utilisée pour connaître le nombre de lignes obtenues.

Sortie :

Chaque ligne peut également être récupérée grâce à son indice dans la liste.

Sortie :

Une ligne vide située entre deux lignes est conservée sous la forme d'une chaîne vide dans la liste.

Sortie :

3. Conserver les séparateurs de lignes avec keepends

Par défaut, splitlines() supprime les caractères servant à marquer les fins de lignes. Le paramètre keepends permet de demander leur conservation.

Dans l'exemple suivant, le comportement par défaut est utilisé. Les caractères \n ne figurent donc pas dans les éléments retournés.

Sortie :

En passant True à splitlines(), les séparateurs de lignes sont conservés à la fin des éléments correspondants. repr() permet ici de les rendre visibles dans l'affichage.

Sortie :

Le paramètre peut également être écrit explicitement sous la forme keepends=True afin de rendre le code plus lisible.

Sortie :

La dernière ligne ne possède pas de \n dans cet exemple, car la chaîne originale ne se termine pas par un saut de ligne.

4. Comprendre les différents séparateurs de lignes

L'un des avantages de splitlines() est qu'elle reconnaît plusieurs types de séparateurs de lignes. Elle n'est donc pas limitée au caractère \n.

Parmi les séparateurs courants, on trouve notamment \n, \r et la séquence \r\n utilisée traditionnellement dans certains environnements.

Dans l'exemple suivant, la chaîne utilise \r\n entre ses lignes. splitlines() les détecte automatiquement.

Sortie :

La méthode reconnaît également le caractère \r comme séparateur de ligne.

Sortie :

Il est même possible de rencontrer plusieurs types de séparateurs dans une même chaîne. splitlines() sait les traiter sans avoir à effectuer plusieurs opérations différentes.

Sortie :

5. Parcourir les lignes obtenues avec splitlines()

Comme splitlines() retourne une liste, il est possible de parcourir directement les lignes obtenues avec une boucle for.

Dans l'exemple suivant, chaque ligne est affichée séparément.

Sortie :

La fonction enumerate() peut être utilisée pour associer un numéro à chaque ligne. L'argument start=1 permet de commencer la numérotation à 1.

Sortie :

On peut également appliquer une opération à chaque ligne. Dans l'exemple suivant, strip() supprime les espaces situés aux extrémités de chacune des lignes.

Sortie :

6. Différence entre splitlines() et split("\n")

Il est possible de découper certaines chaînes en utilisant split("\n"), mais cette technique n'est pas exactement équivalente à splitlines().

Lorsque la chaîne utilise uniquement \n entre ses lignes et ne se termine pas par \n, les deux méthodes peuvent produire le même résultat.

Sortie :

Une différence apparaît lorsque la chaîne se termine par un saut de ligne. split("\n") ajoute alors une chaîne vide finale, tandis que splitlines() ne produit pas cet élément supplémentaire.

Sortie :

Une autre différence importante est que splitlines() reconnaît plusieurs séparateurs de lignes, alors que split("\n") recherche uniquement le caractère \n.

Sortie :

Pour découper un texte selon ses véritables frontières de lignes, splitlines() est donc généralement plus adaptée que split("\n").

7. Exemples pratiques avec splitlines()

Compter les lignes d'un texte

splitlines() peut être utilisée pour déterminer simplement le nombre de lignes contenues dans une chaîne multiligne.

Sortie :

Rechercher une information dans les lignes

Après le découpage, chaque ligne peut être analysée séparément. Dans cet exemple, le programme recherche les lignes contenant le mot "Python".

Sortie :

Ignorer les lignes vides

Une compréhension de liste permet de conserver uniquement les lignes qui contiennent du texte. strip() est utilisée pour considérer une ligne contenant uniquement des espaces comme vide.

Sortie :

Nettoyer chaque ligne d'un texte

splitlines() peut être combinée avec strip() afin de découper un texte puis de supprimer les espaces inutiles autour de chaque ligne.

Sortie :

Numéroter les lignes d'un texte

En combinant splitlines() et enumerate(), on peut facilement créer une numérotation des lignes.

Sortie :

8. À retenir !

La méthode splitlines() est spécialement conçue pour découper une chaîne multiligne en une liste de lignes. Elle offre une solution plus générale que le simple découpage avec split("\n").

  • splitlines() retourne une liste contenant les différentes lignes d'une chaîne.
  • Par défaut, les séparateurs de lignes sont retirés du résultat.
  • splitlines(True) ou splitlines(keepends=True) permet de conserver les séparateurs de lignes.
  • La méthode reconnaît notamment les séparateurs \n, \r et \r\n, ainsi que d'autres frontières de lignes reconnues par Python.
  • Une ligne vide située entre deux séparateurs est représentée par une chaîne vide.
  • Une chaîne terminée par un séparateur de ligne ne produit pas automatiquement un élément vide supplémentaire avec splitlines().
  • split("\n") recherche uniquement \n et n'est donc pas exactement équivalente à splitlines().
  • Le résultat de splitlines() peut être parcouru avec une boucle for.
  • splitlines() peut être combinée avec strip(), enumerate(), len() ou une compréhension de liste.
  • Les chaînes originales ne sont pas modifiées par splitlines().

Le programme suivant résume le fonctionnement de splitlines() avec et sans conservation des séparateurs de lignes.

Sortie :

 




Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/


loader-image
Le prix initial était : € 11,00.Le prix actuel est : € 10,00.
Le prix initial était : € 6,00.Le prix actuel est : € 5,00.



Leave a Reply

Your email address will not be published. Required fields are marked *