Come si converte una stringa in un elenco?
Dì che la stringa è come text = "a,b,c"
. Dopo la conversione, text == ['a', 'b', 'c']
e, si spera text[0] == 'a'
, text[1] == 'b'
?
Come si converte una stringa in un elenco?
Dì che la stringa è come text = "a,b,c"
. Dopo la conversione, text == ['a', 'b', 'c']
e, si spera text[0] == 'a'
, text[1] == 'b'
?
Risposte:
Come questo:
>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
In alternativa, puoi usarlo eval()
se ritieni che la stringa sia sicura:
>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
Solo per aggiungere alle risposte esistenti: si spera che in futuro incontrerai qualcosa di più simile a questo:
>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
Ma quello con cui hai a che fare in questo momento , vai con la risposta di @ Cameron .
>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
Il seguente codice Python trasformerà la tua stringa in un elenco di stringhe:
import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
json
ad esempio:json.loads(teststr)
In Python raramente devi convertire una stringa in un elenco, perché stringhe ed elenchi sono molto simili
Se hai davvero una stringa che dovrebbe essere una matrice di caratteri, fai come segue:
In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
Nota che le stringhe sono molto simili agli elenchi in 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
Le stringhe sono elenchi. Quasi.
Nel caso in cui desideri dividere per spazi, puoi semplicemente usare .split()
:
a = 'mary had a little lamb'
z = a.split()
print z
Produzione:
['mary', 'had', 'a', 'little', 'lamb']
()
, cioè niente.
Se vuoi effettivamente array:
>>> 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'
Se non hai bisogno di array e vuoi solo guardare i tuoi caratteri in base all'indice, ricorda che una stringa è iterabile, proprio come un elenco tranne il fatto che è immutabile:
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
Tutte le risposte sono buone, c'è un altro modo di fare, che è la comprensione dell'elenco, vedere la soluzione di seguito.
u = "UUUDDD"
lst = [x for x in u]
per l'elenco separato da virgole, procedi come segue
u = "U,U,U,D,D,D"
lst = [x for x in u.split(',')]
Di solito uso:
l = [ word.strip() for word in text.split(',') ]
gli strip
spazi intorno rimuovere parole.
Per convertire un codice string
avente il modulo che a="[[1, 3], [2, -6]]"
ho scritto ma non ottimizzato:
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
Utilizzando Python funzionale:
text=filter(lambda x:x!=',',map(str,text))
Esempio 1
>>> email= "myemailid@gmail.com"
>>> email.split()
#OUTPUT
["myemailid@gmail.com"]
Esempio 2
>>> email= "myemailid@gmail.com, someonsemailid@gmail.com"
>>> email.split(',')
#OUTPUT
["myemailid@gmail.com", "someonsemailid@gmail.com"]