conversion string -> list

Le
fred
Bonjour,

Comment, de la chaîne de caractères
"[a, b], [c, d]"
obtenir la liste
[[a, b], [c, d]]
?

Merci d'avance.


Cdlt.

--
Fred
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
moky
Le #18900581
fred ha scritto:
Bonjour,

Comment, de la chaîne de caractères
"[a, b], [c, d]"
obtenir la liste
[[a, b], [c, d]]
?

Merci d'avance.


Cdlt.



Cela a été discuté ici
http://groups.google.fr/group/fr.comp.lang.python/browse_thread/thread/963bf3e15ca64886/36f3c887a660f91f?hl=fr&lnk=gst&q=moky#36f3c887a660f91f

J'ai également tapé ce petit code, qu'il faut utiliser de façon récursive :

def StringToListe(ch):
chaine = ch.replace(" ","")
niveau = 0
liste = []
a = ""
for c in chaine :
a = a+c
if c == "]" : niveau = niveau - 1
if c == "," and niveau == 1:
liste.append(a[0:len(a)-1])
a=""
if c == "[" : niveau = niveau + 1
liste.append(a[0:len(a)-1]) # On ne prend pas le dernier ]
liste[0] = liste[0][1:len(liste[0])] # Pour enlever le premier [
return liste


Bonne aprème
Laurent
fred
Le #18900991
moky
Cela a été discuté ici


Merci.

Ça m'a donné l'idée de me faire mon propre truc à moi que j'ai :-)

#! /usr/bin/env python

a = '[1, 2], [3, 4]'

print 'a =', a

l = []
delim = '[]'
c = a.find(delim[0])
while (c > -1):
d = a[c+1:].find(delim[1]) + c
l.append(map(float, a[c+1:d+1].split(',')))
a = a[d+1:]
c = a.find(delim[0])
print l


Cdlt.

--
Fred
Méta-MCI \(MVP\)
Le #18908271
Salut !

Louque hi-heure :

a=1
b=2
c=3
d=4
s="[a, b], [c, d]"

l=eval('[%s]' %s)
print l # ==> [[a, b], [c, d]]

exec('l=[%s]'%s)
print l # ==> [[a, b], [c, d]]

l=eval(s)
print l # ==> ([a, b], [c, d]) (tuple, par implicitation)

exec('l=%s'%s)
print l # ==> ([a, b], [c, d]) (tuple, par implicitation)

l=list(eval(s))
print l # ==> [[a, b], [c, d]]





--
@-salutations
--
Michel Claveau
Publicité
Poster une réponse
Anonyme