262 votes

Comment convertir une chaîne délimitée par des virgules en liste en Python ?

Étant donné une chaîne qui est une séquence de plusieurs valeurs séparées par une virgule :

 mStr = 'A,B,C,D,E' 

Comment convertir la chaîne en liste ?

 mList = ['A', 'B', 'C', 'D', 'E']

424voto

Matt Williamson Points 10894

Vous pouvez utiliser la méthode str.split.

 >>> my_string = 'A,B,C,D,E'
>>> my_list = my_string.split(",")
>>> print my_list
['A', 'B', 'C', 'D', 'E']

Si vous voulez le convertir en tuple, il suffit

 >>> print tuple(my_list)
('A', 'B', 'C', 'D', 'E')

Si vous souhaitez ajouter à une liste, essayez ceci :

 >>> my_list.append('F')
>>> print my_list
['A', 'B', 'C', 'D', 'E', 'F']

23voto

Dans le cas d'entiers inclus dans la chaîne, si vous voulez éviter de les convertir en int individuellement, vous pouvez faire :

 mList = [int(e) if e.isdigit() else e for e in mStr.split(',')]

C'est ce qu'on appelle la compréhension de liste et elle est basée sur la notation du constructeur d'ensembles.

ex:

 >>> mStr = "1,A,B,3,4"
>>> mList = [int(e) if e.isdigit() else e for e in mStr.split(',')]
>>> mList
>>> [1,'A','B',3,4]

6voto

Ido Savion Points 113

Considérez ce qui suit afin de gérer le cas d'une chaîne vide :

 >>> my_string = 'A,B,C,D,E'
>>> my_string.split(",") if my_string else []
['A', 'B', 'C', 'D', 'E']
>>> my_string = ""
>>> my_string.split(",") if my_string else []
[]

5voto

Raymond Hettinger Points 231
>>> some_string='A,B,C,D,E'
>>> new_tuple= tuple(some_string.split(','))
>>> new_tuple
('A', 'B', 'C', 'D', 'E')

1voto

Hemang Jalali Points 1

Vous pouvez utiliser cette fonction pour convertir des chaînes de caractères simples délimitées par des virgules en liste-

 def stringtolist(x):
    mylist=[]
    for i in range(0,len(x),2):
        mylist.append(x[i])
    return mylist

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X