Wie konvertiert man einen String in eine Liste?
Angenommen, die Zeichenfolge ist wie text = "a,b,c"
. Nach der Konvertierung text == ['a', 'b', 'c']
und hoffentlich text[0] == 'a'
, text[1] == 'b'
?
Wie konvertiert man einen String in eine Liste?
Angenommen, die Zeichenfolge ist wie text = "a,b,c"
. Nach der Konvertierung text == ['a', 'b', 'c']
und hoffentlich text[0] == 'a'
, text[1] == 'b'
?
Antworten:
So was:
>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
Alternativ können Sie Folgendes verwenden, eval()
wenn Sie der Sicherheit der Zeichenfolge vertrauen:
>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
Nur um die vorhandenen Antworten zu ergänzen: Hoffentlich werden Sie in Zukunft auf etwas Ähnliches stoßen:
>>> word = 'abc'
>>> L = list(word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
Aber womit Sie sich gerade beschäftigen , lesen Sie die Antwort von @ Cameron .
>>> word = 'a,b,c'
>>> L = word.split(',')
>>> L
['a', 'b', 'c']
>>> ','.join(L)
'a,b,c'
Der folgende Python-Code verwandelt Ihre Zeichenfolge in eine Liste von Zeichenfolgen:
import ast
teststr = "['aaa','bbb','ccc']"
testarray = ast.literal_eval(teststr)
json
zum Beispiel auch verwenden :json.loads(teststr)
In Python müssen Sie eine Zeichenfolge selten in eine Liste konvertieren, da Zeichenfolgen und Listen sehr ähnlich sind
Wenn Sie wirklich eine Zeichenfolge haben, die ein Zeichenarray sein sollte, gehen Sie folgendermaßen vor:
In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
Beachten Sie, dass Strings Listen in Python sehr ähnlich sind
In [3]: x[0]
Out[3]: 'f'
In [4]: for i in range(len(x)):
...: print x[i]
...:
f
o
o
b
a
r
Zeichenfolgen sind Listen. Fast.
Wenn Sie nach Leerzeichen teilen möchten, können Sie einfach Folgendes verwenden .split()
:
a = 'mary had a little lamb'
z = a.split()
print z
Ausgabe:
['mary', 'had', 'a', 'little', 'lamb']
()
, dh überhaupt nichts.
Wenn Sie tatsächlich Arrays möchten:
>>> 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'
Wenn Sie keine Arrays benötigen und Ihre Zeichen nur nach Index anzeigen möchten, denken Sie daran, dass eine Zeichenfolge wie eine Liste iterierbar ist, mit der Ausnahme, dass sie unveränderlich ist:
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
Alle Antworten sind gut, es gibt eine andere Möglichkeit, nämlich das Listenverständnis, siehe die folgende Lösung.
u = "UUUDDD"
lst = [x for x in u]
Für eine durch Kommas getrennte Liste gehen Sie wie folgt vor
u = "U,U,U,D,D,D"
lst = [x for x in u.split(',')]
Ich benutze normalerweise:
l = [ word.strip() for word in text.split(',') ]
die strip
Leerzeichen um Wörter entfernen.
So konvertieren Sie einen string
mit dem Formular, das a="[[1, 3], [2, -6]]"
ich geschrieben habe, noch nicht optimierten Code:
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
Verwenden von funktionalem Python:
text=filter(lambda x:x!=',',map(str,text))
Beispiel 1
>>> email= "myemailid@gmail.com"
>>> email.split()
#OUTPUT
["myemailid@gmail.com"]
Beispiel 2
>>> email= "myemailid@gmail.com, someonsemailid@gmail.com"
>>> email.split(',')
#OUTPUT
["myemailid@gmail.com", "someonsemailid@gmail.com"]