La méthode split est une méthode des chaînes de caractères. Elle permet de découper une chaîne en une liste de chaînes de caractères en fonction du séparateur défini en argument.
Séparateur par défaut
Si on ne passe aucun argument à la méthode split, la séparation sera faite sur tous les types d'espaces blancs :
-
retours à la ligne
-
espace
-
tabulation
Exemples
Si la chaîne est vide la méthode retourne une liste vide :
print(" ".split()) # []
De la même façon, avec un retour à la ligne ou une tabulation, aucun élément n'est retourné :
print("\n\t".split()) # []
Dans le cas contraire, elle retournera une liste d'au moins un élément :
print("Patrick".split()) # ['Patrick']
print("Patrick passe son TOSA".split()) # ['Patrick', 'passe', 'son', 'TOSA']
Avec un séparateur explicite
Il est bien sûr possible de spécifier un séparateur de manière explicite. Dans ce cas précis, la liste retournée contiendra toujours au moins un élément, même si la chaîne de caractères est vide.
Exemples
En utilisant un espace comme séparateur explicite :
print("Bonjour Patrick de docstring".split(" ")) # ['Bonjour', 'Patrick', 'de', 'docstring']
La chaîne est découpée sur les espaces.
Donc, si des espaces sont présents en début et fin de chaîne, split va retourner une chaîne vide avant le premier mot et après le dernier mot.
print(" Bonjour Patrick de docstring ".split(" ")) # ['', 'Bonjour', 'Patrick', 'de', 'docstring', '']
Avec une chaîne composée de 4 espaces :
print(" ".lower().split(" ")) # ['', '', '', '', '']
La méthode retourne 5 éléments vides. En effet, split va couper la chaîne à chaque occurrence.
Pour bien s'en rendre compte :
print("a b".lower().split(" ")) # ['a', 'b']
J'ai deux éléments et un espace, la liste retournée contient bien deux chaînes.
Si le séparateur n'est pas dans la chaîne :
print("Bonjour Patrick de docstring".split(",")) # ['Bonjour Patrick de docstring']
Ici split retourne une liste contenant un seul élément : la chaîne entière.
Prenons un dernier exemple :
print("Bonjour Patrick, de docstring".split(",")) # ['Bonjour Patrick', ' de docstring']
Ici la chaîne sera bien coupée en deux.
Cas spécifiques
Il y a quelques subtilités avec la méthode split. Même si nous avons déjà vu quelques exemples, il est important de revenir sur ces exemples :
# Chaine vide avec ou sans séparateur print("".split(",")) # Résultat : [''] print("".split()) # Résultat : []
-
Si la chaîne est vide et qu'un séparateur explicite est spécifié, la méthode retournera une liste contenant une chaîne vide (
['']). -
Si la chaîne est vide et qu'aucun séparateur n'est spécifié (appel sans argument), la méthode retournera une liste vide (
[]).
Attention
Appeler la méthode split() sans argument et appeler explicitement avec un espace (split(" ")) n'est pas la même chose.
Sans argument, split prend en compte les espaces blancs (tabulations, espaces, sauts de lignes) et les chaînes vides sont ignorées.
Avec un espace explicite (split(" ")), la chaîne sera découpée à chaque espace.
print(" ".split()) # Résultat : [] print(" ".split(" ")) # Résultat : ['', '', '', '', '', ''] print(" a ".split()) # Résultat : ['a'] print(" a ".split(" ")) # Résultat : ['', '', '', 'a', '', '']