OVH Cloud OVH Cloud

convertion str => list

8 réponses
Avatar
ReM
Bonjour,

j'ai une variable de type str.
Je souhaite la convertir en list mais la fonction list() ne fonctionne
pas comme je souhaite :
>>> l = "[34,35]"
>>> list(l)
['[', '3', '4', ',', '3', '5', ']']

Quelqu'un aurait une idée svp ?

Merci

Rémi

8 réponses

Avatar
Guillaume Bouchard
ReM wrote:
Bonjour,

j'ai une variable de type str.
Je souhaite la convertir en list mais la fonction list() ne fonctionne
pas comme je souhaite :
l = "[34,35]"





l = "[34,35]"
l.strip('[]').split(',')
['34', '35']

Mais je me demande, quel est ton but ?

--
Guillaume.




Avatar
Sébastien Kirche
Le 2 Jun 2005, ReM s'est exprimé ainsi :

Quelqu'un aurait une idée svp ?


Avec eval() ?

eval("[34,35]")
[34, 35]



eval("[34,35]").__class__
<type 'list'>




HTH
--
Sébastien Kirche



Avatar
ReM
ReM wrote:

Bonjour,

j'ai une variable de type str.
Je souhaite la convertir en list mais la fonction list() ne fonctionne
pas comme je souhaite :
l = "[34,35]"






l = "[34,35]"
l.strip('[]').split(',')
['34', '35']

Mais je me demande, quel est ton but ?




merci
Dans un formulaire WEB, je stocke une liste d'ids sous cette forme dans
un input : <input type="hidden" name="liste" value="[34, 35, 36]">
Puis je souhaite accéder à tous ces éléments :
for l in liste:
etc..............
J'étais donc obliger de faire une petite transformation grace à liste =
liste.replace(' ', '').strip('[]').split(',')

encore merci





Avatar
F. Petitjean
Dans un formulaire WEB, je stocke une liste d'ids sous cette forme dans
un input : <input type="hidden" name="liste" value="[34, 35, 36]">
Puis je souhaite accéder à tous ces éléments :
for l in liste:
etc..............
J'étais donc obliger de faire une petite transformation grace à liste =
liste.replace(' ', '').strip('[]').split(',')

encore merci


une autre possibilité (voir un autre fil)
from string import maketrans
tt = maketrans("", "") # table "transparente"

lst="[34, 35, 36]"
lst.translate(tt, "[],").split() # supprime les virgules et crochets
# les valeurs sous forme de chaine de caractères map(int, ...) si vous
# voulez des valeurs entières.

évidemment, il faut dans ce cas que les valeurs soient séparées par une
virgule et un espace. Faut adapter à votre cas précis, peut-être
lst.replace(',', ' ').maketrans(tt, '[]').split()

Et dans les cas désespérés, sortir la grosse artillerie du module csv.

Avatar
Amaury Forgeot d'Arc
Bonjour,

j'ai une variable de type str.
Je souhaite la convertir en list mais la fonction list() ne fonctionne
pas comme je souhaite :
l = "[34,35]"
list(l)
['[', '3', '4', ',', '3', '5', ']']




Quelqu'un aurait une idée svp ?

Merci

Rémi


Et pourquoi pas eval ?
l = "[34,35]"
eval(l)
[34, 35]




--
Amaury




Avatar
Guillaume Bouchard
ReM wrote:
Dans un formulaire WEB, je stocke une liste d'ids sous cette forme dans
un input : <input type="hidden" name="liste" value="[34, 35, 36]">


Pourquoi ne pas utiliser une forme plus propre, exemple

value="34 35 36"

liste = [int(e) for e in liste.split()]

Plutôt que cette usine à gaz ?

--
Guillaume.

Avatar
Paul Gaborit
À (at) Thu, 02 Jun 2005 21:20:03 +0200,
Amaury Forgeot d'Arc écrivait (wrote):
Bonjour,
j'ai une variable de type str.
Je souhaite la convertir en list mais la fonction list() ne fonctionne pas
comme je souhaite :
l = "[34,35]"
list(l)
['[', '3', '4', ',', '3', '5', ']']



Quelqu'un aurait une idée svp ?
Merci
Rémi


Et pourquoi pas eval ?
l = "[34,35]"
eval(l)
[34, 35]





Si la chaîne en question provient d'une requête HTTP comme l'explique le PO
dans un autre article de l'enfilade, c'est tout de même sacrément risqué...

--
Paul Gaborit - <http://perso.enstimac.fr/~gaborit/>





Avatar
Jerome
ReM wrote:
Bonjour,

j'ai une variable de type str.
Je souhaite la convertir en list mais la fonction list() ne fonctionne
pas comme je souhaite :
l = "[34,35]"
list(l)
['[', '3', '4', ',', '3', '5', ']']




Quelqu'un aurait une idée svp ?

Merci

Rémi


tu peux aussi faire

l = "[34,35]"
eval(l)





Jérôme