Comment diviser des chaînes en Python : 9 techniques essentielles avec exemples

La manipulation de chaînes est essentielle pour tout développeur Python expérimenté, surtout lorsqu’il s’agit de données réelles comme des fichiers CSV, des journaux ou simplement du texte complexe. Parfois, vous souhaitez fractionner des données en utilisant des espaces, d’autres fois, vous devez gérer des délimiteurs personnalisés, ou simplement extraire un morceau de chaîne sans difficulté. Python dispose d’un ensemble d’outils plutôt performants pour tout cela ; la plupart des utilisateurs connaissent probablement str.split(), mais il existe de nombreuses astuces et autres fonctions qui peuvent vous simplifier la vie, surtout lorsque les choses se compliquent. Ce guide explore neuf méthodes différentes pour fractionner des chaînes, afin que vous ne soyez pas pris au dépourvu la prochaine fois que vous analyserez du texte étrange ou que vous aurez besoin de la bonne quantité de données. Attendez-vous à des exemples pas à pas, des cas d’utilisation et des conseils basés sur des situations réelles.

Consultez l’API officielle pour str.split: docs.python.org.

Comment diviser des chaînes en Python : quelques méthodes efficaces

Diviser sur les espaces avecstr.split()

Par défaut, il suffit d’appeler split()les tranches sans arguments sur les espaces : espaces, tabulations, sauts de ligne, etc. C’est très pratique pour un nettoyage rapide si votre texte n’est pas très structuré, mais que vous souhaitez tout de même obtenir des mots ou des jetons individuels.

s = "Python makes text processing easier" parts = s.split() print(parts) # ['Python', 'makes', 'text', 'processing', 'easier'] 

C’est assez simple. Parfois, vous souhaitez stocker le résultat de la division pour le réutiliser, par exemple :

words = s.split() print(words[0]) # Python 

Sur certaines configurations, en particulier si vos chaînes comportent des espaces de début ou de fin, cela peut parfois se comporter de manière étrange. Gardez donc un œil dessus.

Diviser en utilisant un délimiteur spécifique

Si votre texte est structuré avec des séparateurs clairs, comme les CSV, split()un délimiteur est votre ami.

csv = "Alice, Bob, Charlie" names = csv.split(", ") print(names) # ['Alice', 'Bob', 'Charlie'] 

Il en va de même pour les onglets :

tsv = "2\tapple juice\t2.00" fields = tsv.split("\t") print(fields) # ['2', 'apple juice', '2.00'] 

Si vous avez affaire à des délimiteurs irréguliers ou à plusieurs caractères, cela fonctionne également bien, mais faites attention aux données incohérentes : cela peut parfois vous faire trébucher.

Limitez le nombre de divisions avecmaxsplit

Cette méthode est utile si vous ne souhaitez diviser la chaîne qu’une ou deux fois, et non en mille morceaux. Par exemple, si vous avez une entrée de journal et que vous ne souhaitez conserver que les premières parties.

log = "2025-01-15 08:45:23 INFO User logged in" date, time, level, message = log.split(maxsplit=3) print(date, time, level, message) # '2025-01-15' '08:45:23' 'INFO' 'User logged in' 

Ou peut-être :

"A B C".split(maxsplit=1) # ['A', 'B C'] 

Cela permet de garder les choses en ordre si vous n’êtes intéressé que par les premiers bits d’une chaîne.

Split à droite avecrsplit()

Parfois, la dernière partie d’une chaîne est la plus importante, comme l’extraction du nom de fichier d’un chemin.rsplit()fait le travail en se séparant à partir de la fin.

path = "/home/user/docs/tax.txt" directory, filename = path.rsplit("/", maxsplit=1) print(directory) # /home/user/docs print(filename) # tax.txt 

Ceci est particulièrement pratique lors de l’analyse des chemins de fichiers ou des URL où la dernière section varie.

Utiliser partition()pour une seule division avec le séparateur inclus

Si seul le premier séparateur est important, partition()la chaîne est divisée en un tuple contenant la partie précédente, le séparateur lui-même et le reste. Cette méthode est propre et fiable pour récupérer uniquement le premier fragment.

s = "abcd qwrre qwedsasd zxcwsacds" head, sep, tail = s.partition(" ") print(head) # abcd print(tail) # qwrre qwedsasd zxcwsacds 

Contrairement à split(maxsplit=1), cela donne toujours un tuple en trois parties avec le séparateur s’il est trouvé.

Divisé en lignes avecsplitlines()

Idéal pour traiter du texte multiligne, des journaux ou des saisies utilisateur comportant des sauts de ligne. Il simplifie la transformation d’un gros bloc de texte en une liste de lignes.

text = "Hello\nHow are you?\n" lines = text.splitlines() print(lines) # ['Hello', 'How are you?'] 

Et si vous souhaitez conserver les fins de ligne, splitlines(keepends=True)faites-le. Je ne sais pas pourquoi, mais il est parfois nécessaire de conserver ces sauts de ligne pour un traitement ultérieur.

Plongez dans les divisions regex avecre.split()

C’est là que les choses se compliquent. Si vous devez effectuer une division en fonction de plusieurs délimiteurs, espaces ou motifs étranges, le module re est fait pour vous.

import re data = "Apple:Orange|Lemon-Date" parts = re.split(r"[:|-]", data) print(parts) # ['Apple', 'Orange', 'Lemon', 'Date'] 

Vous gérez des données complexes avec plusieurs délimiteurs simultanément ? Aucun problème. Voici un exemple avec plusieurs délimiteurs et espaces :

messy = "Apple :::::3:Orange | 2|||Lemon --1 AND Date :: 10" pattern = r"\s*(?:[:|\-]+|AND)\s*" print(re.split(pattern, messy)) # ['Apple', '3', 'Orange', '2', 'Lemon', '1', 'Date', '10'] 

Préparez-vous : les expressions régulières peuvent être déroutantes, mais elles sont puissantes lorsqu’elles sont utilisées correctement.

Divisez facilement en caractères

Besoin de chaque caractère individuellement ? Convertissez simplement la chaîne en liste :

chars = list("foobar") print(chars) # ['f', 'o', 'o', 'b', 'a', 'r'] 

Simple, mais très utile si vous effectuez un traitement ou des comparaisons au niveau des caractères.

Diviser plusieurs lignes en mots

Si vous travaillez sur plusieurs lignes de texte et souhaitez constituer une longue liste de mots, une boucle ou une compréhension de liste peut être une solution. Par exemple :

book_lines = ["the history of", "australian exploration from 1788 to 1888"] words = [] for line in book_lines: words.extend(line.split()) print(words) # ['the', 'history', 'of', 'australian', 'exploration', 'from', '1788', 'to', '1888'] 

Ou une courte phrase :

words = [w for line in book_lines for w in line.split()] 

Des trucs du monde réel. Fonctionne plutôt bien pour tokeniser du texte.

Conseils rapides pour le fractionnement des cordes

  • split()crée de nouvelles listes ; vos chaînes restent les mêmes (les chaînes sont immuables, après tout).
  • Affectez toujours la sortie : tokens = s.split(). Sinon, vous ne faites que gaspiller du code.
  • À utiliser split("\t")lors du traitement des données TSV.
  • Lorsque vous n’avez besoin que de la première partie d’une chaîne partition()ou que split(maxsplit=1)vous recherchez des options plus propres.
  • Vous recherchez des chemins de fichiers ? rsplit()Fait des merveilles pour l’extraction des noms de fichiers de fin.
  • Gestion de l’entrée multiligne ? splitlines()à la rescousse.

Conclure

Il s’avère que la boîte à outils de découpage de chaînes de Python est très polyvalente. Que vous analysiez des fichiers CSV, des journaux ou que vous éliminiez simplement les entrées utilisateur, il existe généralement une méthode ou une fonction pour vous simplifier la tâche. La pratique de ces techniques rend votre code plus efficace, plus propre et moins frustrant face à des modèles de texte complexes.À terme, ces astuces peuvent vous éviter bien des soucis, notamment avec des sources de données complexes ou imprévisibles.

Résumé

  • À utiliser split()pour des divisions d’espaces simples ou des données structurées comme des fichiers CSV.
  • Choisissez rsplit()les parties de fin comme les noms de fichiers dans les chemins.
  • À utiliser partition()pour un seul fractionnement — pratique et clair.
  • splitlines()fonctionne pour les blocs multilignes, les journaux ou les entrées utilisateur.
  • Regex est votre ami pour les délimiteurs complexes avec re.split().
  • Divisé en caractères avec list().
  • Vous gérez plusieurs lignes ? Parcourez vos lignes avec split()une compréhension.

Conclure

Honnêtement, maîtriser ces méthodes peut faire toute la différence lorsqu’on traite des données réelles et complexes. Toutes les divisions ne sont pas simples, et il faudra parfois utiliser des expressions régulières ou une combinaison d’astuces. Si vous maîtrisez ces méthodes, écrire des scripts Python pour le traitement de texte sera beaucoup moins pénible. Bonne chance pour analyser ces chaînes complexes ! Vous y arriverez.