Comment convertissez-vous une chaîne en liste?
Supposons que la chaîne ressemble à text = "a,b,c"
. Après la conversion, text == ['a', 'b', 'c']
et, espérons-le, text[0] == 'a'
, text[1] == 'b'
?
Comme ça:
>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
Sinon, vous pouvez utiliser eval()
si vous pensez que la chaîne est sûre:
>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
Pour ajouter aux réponses existantes: j'espère que vous rencontrerez quelque chose de plus semblable à l'avenir:
>>> Word = 'abc'
>>> L = list(Word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
Mais ce que vous avez à faire avec maintenant, allez avec la réponse de @ Cameron .
>>> Word = 'a,b,c'
>>> L = Word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
Le code Python suivant transformera votre chaîne en une liste de chaînes:
import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
En python, vous devez rarement convertir une chaîne en liste, car les chaînes et les listes sont très similaires.
Si vous avez vraiment une chaîne qui devrait être un tableau de caractères, procédez comme suit:
In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
Notez que les chaînes ressemblent beaucoup aux listes en python
In [3]: x[0]
Out[3]: 'f'
In [4]: for i in range(len(x)):
...: print x[i]
...:
f
o
o
b
a
r
Les chaînes sont des listes. Presque.
Si vous voulez réellement des tableaux:
>>> from array import array
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> myarray = array('c', text)
>>> myarray
array('c', 'abc')
>>> myarray[0]
'a'
>>> myarray[1]
'b'
Si vous n'avez pas besoin de tableaux et que vous voulez seulement regarder vos personnages par index, souvenez-vous qu'une chaîne est une chaîne itérable, tout comme une liste, sauf qu'elle est immuable:
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
Si vous souhaitez diviser par des espaces, vous pouvez simplement utiliser .split()
:
a = 'mary had a little lamb'
z = a.split()
print z
Sortie:
['mary', 'had', 'a', 'little', 'lamb']
m = '[[1,2,3],[4,5,6],[7,8,9]]'
m= eval(m.split()[0])
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
Pour convertir une string
sous la forme a="[[1, 3], [2, -6]]"
j'ai écrit un code non optimisé:
matrixAr = []
mystring = "[[1, 3], [2, -4], [19, -15]]"
b=mystring.replace("[[","").replace("]]","") # to remove head [[ and tail ]]
for line in b.split('], ['):
row =list(map(int,line.split(','))) #map = to convert the number from string (some has also space ) to integer
matrixAr.append(row)
print matrixAr
J'utilise habituellement:
l = [ Word.strip() for Word in text.split(',') ]
la strip
supprime les espaces autour des mots.
# to strip `,` and `.` from a string ->
>>> 'a,b,c.'.translate(None, ',.')
'abc'
Vous devez utiliser la méthode translate
intégrée pour les chaînes.
Tapez help('abc'.translate)
dans Python Shell pour plus d'informations.
Utilisation de Python fonctionnel:
text=filter(lambda x:x!=',',map(str,text))
Toutes les réponses sont bonnes, il y a une autre façon de faire, la compréhension de liste, voir la solution ci-dessous
u = "UUUDDD"
lst = [x for x in u]
pour la liste séparée par des virgules, procédez comme suit
u = "U,U,U,D,D,D"
lst = [x for x in u.split(',')]