Python, split pour diviser une chaîne de caractères séparée par des virgules, supprimer les espaces et convertir en liste

Affaires

Lors de la division d'une chaîne de caractères séparée par des virgules en une liste en Python, s'il n'y a pas d'espace entre les deux, la fonction split() suffit. S'il y a des espaces, il est utile de la combiner avec strip() pour supprimer les espaces supplémentaires. En outre, l'utilisation de la notation de compréhension de liste est une façon intelligente d'écrire.

Dans cette section, nous expliquons d'abord ce qui suit.

  • Divise une chaîne de caractères avec un délimiteur spécifié et la retourne sous forme de liste.split()
  • Supprime les caractères supplémentaires du début et de la fin d'une chaîne de caractères.strip()
  • Notation de compréhension de liste pour appliquer des fonctions et des méthodes à des éléments de liste.

Il montre également comment créer une liste de chaînes de caractères séparées par des espaces et des virgules en supprimant les espaces, comme indiqué ci-dessous.
'one, two, three'

En outre, nous aborderons les points suivants

  • Comment l'obtenir sous forme de liste de chiffres
  • Comment utiliser join() pour joindre une liste et la transformer en chaîne de caractères ?

split(): Divise une chaîne de caractères avec un délimiteur spécifié et la retourne sous forme de liste.

En utilisant la méthode split() pour les chaînes de caractères, vous pouvez diviser une chaîne de caractères avec un délimiteur spécifié et l'obtenir sous forme de liste (tableau). Le délimiteur spécifié peut être indiqué par l'argument suivant.sep

Si l'argument sep est omis et qu'aucun délimiteur n'est spécifié, il divise la chaîne par des espaces et renvoie une liste. Les espaces et les tabulations consécutives diviseront également la liste, donc si vous voulez faire une liste de chaînes délimitées par des tabulations, vous pouvez utiliser split() sans l'argument.

s = 'one two three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one two        three'
l = s.split()
print(l)
# ['one', 'two', 'three']

s = 'one\ttwo\tthree'
l = s.split()
print(l)
# ['one', 'two', 'three']

Si un délimiteur est spécifié dans l'argument sep, il divise la liste par cette chaîne et retourne une liste.

s = 'one::two::three'
l = s.split('::')
print(l)
# ['one', 'two', 'three']

Dans le cas d'une chaîne séparée par une virgule, s'il n'y a pas d'espace blanc supplémentaire, il n'y a pas de problème, mais si vous exécutez split() avec une virgule comme délimiteur pour une chaîne séparée par une virgule + espace blanc, vous vous retrouverez avec une liste de chaînes avec un espace blanc laissé au début.

s = 'one,two,three'
l = s.split(',')
print(l)
# ['one', 'two', 'three']

s = 'one, two, three'
l = s.split(',')
print(l)
# ['one', ' two', ' three']

Vous pouvez utiliser une virgule + un espace comme délimiteur comme suit, mais cela ne fonctionnera pas si le nombre d'espaces dans la chaîne originale est différent.', '

s = 'one, two, three'
l = s.split(', ')
print(l)
# ['one', 'two', 'three']

s = 'one, two,  three'
l = s.split(', ')
print(l)
# ['one', 'two', ' three']

La méthode strip(), qui sera expliquée plus loin, peut être utilisée pour traiter deux espaces.

strip(): Supprime les caractères supplémentaires du début et de la fin d'une chaîne de caractères.

strip() est une méthode permettant de supprimer les caractères supplémentaires au début et à la fin d'une chaîne de caractères.

Si l'argument est omis, une nouvelle chaîne est retournée avec les caractères d'espacement supprimés. La chaîne originale elle-même n'est pas modifiée.

s = '  one  '
print(s.strip())
# one

print(s)
#   one  

Si une chaîne de caractères est spécifiée comme argument, les caractères contenus dans la chaîne seront supprimés.

s = '-+-one-+-'
print(s.strip('-+'))
# one

Dans ce cas, les espaces ne sont pas supprimés. Par conséquent, si vous souhaitez également supprimer les espaces, passez une chaîne incluant des espaces comme argument, comme indiqué ci-dessous.'-+ '

s = '-+- one -+-'
print(s.strip('-+'))
#  one 

s = '-+- one -+-'
print(s.strip('-+ '))
# one

strip() gère les deux extrémités, mais les fonctions suivantes sont également disponibles.

  • lstrip():Le processus n'est qu'un début
  • rstrip():Traiter uniquement la fin de la ligne.

Notation de la compréhension des listes : appliquer des fonctions et des méthodes aux éléments de la liste

Si vous voulez appliquer une fonction ou une méthode aux éléments d'une liste, il est judicieux d'utiliser la notation de compréhension de liste au lieu de la boucle for si vous voulez obtenir la liste à la fin.

Ici, nous appliquons strip() à la liste obtenue en divisant la chaîne de caractères avec split(). Les espaces supplémentaires dans une chaîne de caractères séparée par des virgules et contenant des espaces peuvent être supprimés pour obtenir une liste.

s = 'one, two, three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

Lorsqu'on applique cette méthode à une chaîne vide, on obtient une liste dont un seul élément est une chaîne vide.

s = ''
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['']
# 1

Si vous voulez obtenir une liste vide pour une chaîne vide, vous pouvez mettre en place une branche conditionnelle dans la notation de compréhension de liste.

s = ''
l = [x.strip() for x in s.split(',') if not s == '']
print(l)
print(len(l))
# []
# 0

'one, , three'
En outre, si un élément séparé par des virgules est manquant, comme décrit ci-dessus, la première méthode le répertorie comme un élément de chaîne vide.

s = 'one, , three'
l = [x.strip() for x in s.split(',')]
print(l)
print(len(l))
# ['one', '', 'three']
# 3

Si vous voulez ignorer les parties manquantes, vous pouvez mettre en place une branche conditionnelle dans la notation de compréhension de liste.

s = 'one, ,three'
l = [x.strip() for x in s.split(',') if not x.strip() == '']
print(l)
print(len(l))
# ['one', 'three']
# 2

Obtenir sous forme de liste de chiffres

Si vous souhaitez obtenir une chaîne de chiffres séparés par des virgules sous la forme d'une liste de chiffres au lieu d'une chaîne, appliquez int() ou float() pour convertir la chaîne en un nombre dans la notation de compréhension de liste.

s = '1, 2, 3, 4'
l = [x.strip() for x in s.split(',')]
print(l)
print(type(l[0]))
# ['1', '2', '3', '4']
# <class 'str'>

s = '1, 2, 3, 4'
l = [int(x.strip()) for x in s.split(',')]
print(l)
print(type(l[0]))
# [1, 2, 3, 4]
# <class 'int'>

join(): Fusionner une liste et l'obtenir sous forme de chaîne de caractères.

À l'inverse, si vous voulez joindre une liste et obtenir des chaînes séparées par un délimiteur spécifique, utilisez la méthode join().

Il est facile de faire une erreur, mais notez que join() est une méthode de chaîne de caractères, pas une méthode de liste. La liste est spécifiée en tant qu'argument.

s = 'one, two,  three'
l = [x.strip() for x in s.split(',')]
print(l)
# ['one', 'two', 'three']

print(','.join(l))
# one,two,three

print('::'.join(l))
# one::two::three

Vous pouvez l'écrire en une seule ligne comme suit.

s = 'one, two,  three'
s_new = '-'.join([x.strip() for x in s.split(',')])
print(s_new)
# one-two-three

Si vous souhaitez simplement modifier un délimiteur fixe, il est plus facile de le remplacer avec la méthode replace().

s = 'one,two,three'
s_new = s.replace(',', '+')
print(s_new)
# one+two+three
Copied title and URL