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'
?
So was:
>>> text = 'a,b,c'
>>> text = text.split(',')
>>> text
[ 'a', 'b', 'c' ]
Alternativ können Sie eval()
verwenden, wenn Sie sicher sind, dass die Zeichenfolge sicher ist:
>>> text = 'a,b,c'
>>> text = eval('[' + text + ']')
Nur um die vorhandenen Antworten zu ergänzen: In Zukunft werden Sie auf etwas Ähnliches stoßen:
>>> Word = 'abc'
>>> L = list(Word)
>>> L
['a', 'b', 'c']
>>> ''.join(L)
'abc'
Aber was Sie gerade mit anfangen, gehen Sie mit der 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)
In Python müssen Sie selten eine Zeichenfolge in eine Liste konvertieren, da sich Zeichenfolgen und Listen sehr ähnlich sind
Wenn Sie wirklich eine Zeichenfolge haben, die ein Zeichenfeld sein soll, führen Sie Folgendes aus:
In [1]: x = "foobar"
In [2]: list(x)
Out[2]: ['f', 'o', 'o', 'b', 'a', 'r']
Beachten Sie, dass Strings sehr ähnlich zu Listen in Python 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
Strings sind Listen. Fast.
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 anhand des Index anzeigen möchten, denken Sie daran, dass eine Zeichenfolge eine Iteration ist, genau wie eine Liste, es sei denn, sie ist unveränderlich:
>>> text = "a,b,c"
>>> text = text.replace(',', '')
>>> text[0]
'a'
Wenn Sie nach Leerzeichen aufteilen möchten, können Sie einfach .split()
verwenden:
a = 'mary had a little lamb'
z = a.split()
print z
Ausgabe:
['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]]
Um ein string
mit der Form a="[[1, 3], [2, -6]]"
zu konvertieren, habe ich noch nicht optimierten Code geschrieben:
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
Ich verwende normalerweise:
l = [ Word.strip() for Word in text.split(',') ]
die Variable strip
entfernt Leerzeichen um Wörter.
# to strip `,` and `.` from a string ->
>>> 'a,b,c.'.translate(None, ',.')
'abc'
Sie sollten die integrierte translate
-Methode für Zeichenfolgen verwenden.
Geben Sie help('abc'.translate)
bei Python Shell ein, um weitere Informationen zu erhalten.
Verwendung von funktionellem Python:
text=filter(lambda x:x!=',',map(str,text))
Alle Antworten sind gut, es gibt einen anderen Weg, nämlich Listenverständnis, siehe Lösung unten.
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(',')]