2011-11-22 4 views
4

Je reçois les données que le type <type 'unicode'>Modifier la chaîne unicode dans la liste?

u'{0.128,0.128,0.133,0.137,0.141,0.146,0.15,0.155,0.159,0.164,0.169,0.174,0.179,0.185,0.19,0.196,0.202,0.208,0.214,0.22}' 

Je veux convertir en liste comme

[0.128,0.128,0.133,0.137,0.141,0.146,0.15,0.155,0.159,0.164,0.169,0.174,0.179,0.185,0.19,0.196,0.202,0.208,0.214,0.22] 

Comment puis-je faire avec python?

Merci

Répondre

8

Juste comme ça:

>>> a = u'{0.128,0.128,0.133,0.137,0.141,0.146,0.15,0.155,0.159,0.164,0.169,0.174,0.179,0.185,0.19,0.196,0.202,0.208,0.214,0.22}' 
>>> [float(i) for i in a.strip('{}').split(',')] 
[0.128, 0.128, 0.133, 0.137, 0.141, 0.146, 0.15, 0.155, 0.159, 0.164, 0.169, 0.174, 0.179, 0.185, 0.19, 0.196, 0.202, 0.208, 0.214, 0.22] 

Unicode est très similaire à str et vous pouvez utiliser .split(), ainsi que strip(). En outre, le casting à float fonctionne de la façon dont il fonctionne pour str.

Ainsi, la première bande votre chaîne des accolades inutiles ({ et }) en utilisant .strip('{}'), puis diviser la chaîne résultante par des virgules (,) en utilisant .split(','). Après cela, vous pouvez simplement utiliser la compréhension de la liste, en convertissant chaque élément à float, comme dans l'exemple ci-dessus.

+1

juste la façon dont je voulais, merci pour la grande aide :) – daydreamer

+2

@daydreamer: Je suis heureux d'avoir aidé :) – Tadeck

4

de ma tête et non testé:

data = u'your string with braces removed' 
aslist = [float(x) for x in data.split(',')]