@Clinteney: Kein Problem ;-) Vielleicht möchten Sie auch prüfen, pickleob Sie Objekte für Zeichenfolgen beibehalten .
Cameron
2
Dies ist kein Array, sondern eine Liste. Arrays stellen Grundwerte dar und verhalten sich sehr ähnlich wie Listen, außer dass der Typ der darin gespeicherten Objekte eingeschränkt ist.
Joaquin
8
Freundliche Erinnerung: Verwenden Sie eval nicht, auch wenn Sie darauf vertrauen, dass die Zeichenfolge sicher ist. Das potenzielle Sicherheitsrisiko lohnt sich nicht für mehr als persönliche Skripte und das Fummeln in einer interaktiven Shell.
A. Wilson
3
eval ('[' + text + ']') behandelt a, b, c als Variablen, nicht als Zeichenfolge.
Phaibin
1
Abgestimmt, weil die beiden vorgeschlagenen Lösungen völlig unterschiedliche Aufgaben erfüllen und dies im Antworttext in keiner Weise erläutert wird. Während die Frage selbst nicht wirklich klar ist, sollte in der Antwort klargestellt werden, dass die beiden Lösungen keine äquivalenten Alternativen sind, sondern unterschiedliche Interpretationen der Frage.
Matteo Italia
179
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'
Obwohl ich Ihnen zustimme, dass die Antwort von @ Cameron die Antwort "im Moment" war, denke ich, dass Ihre Gründlichkeit dies zur korrekteren Antwort macht. In der realen Welt werden selten durch Kommas getrennte Zeichenfolgen ausgegeben, und es ist gut zu wissen, wie man unabhängig vom Format in eine Liste konvertiert.
TristanZimmerman
39
Der folgende Python-Code verwandelt Ihre Zeichenfolge in eine Liste von Zeichenfolgen:
Dies gibt aus, was zwischen den ist (), dh überhaupt nichts.
Anthon
7
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'
Aus Neugier, nachdem Sie myarray = array ('c', Text) gemacht haben, wohin ging das "c"? denn wenn Sie Array eingeben, haben Sie Array ("c", "abc"), aber a [0] == a? Vielen Dank
Clinteney Hui
@Clinteney: Das 'c' bedeutet "ein Array von Zeichen erstellen". Weitere Informationen finden Sie in den Dokumenten
Cameron
Ich habe gestimmt, aber zu früh. Ich erhalte ein Array ('c', '1 1 91 0.001 228'), wenn ich a = array ('c', e) aufrufe, wobei e = "1 1 91 0.001 228"
Valentin Heinitz
@ValentinHeinitz Ja, das müssen Sie bekommen, wie in meinem Beispiel gezeigt. Was erwartest du ?
Joaquin
1
@joaquin: Ok, ich habe es verstanden. Mit der Antwort ist alles in Ordnung. Ich war verwirrt von der Frage "text == [a, b, c]" sollte "text == ['a', 'b', 'c']" sein
Valentin Heinitz
4
m ='[[1,2,3],[4,5,6],[7,8,9]]'
m= eval(m.split()[0])[[1,2,3],[4,5,6],[7,8,9]]
Bitte geben Sie einige zusätzliche Informationen zusammen mit Ihrem Code an, damit das Originalplakat besser verstehen kann, wie dies sein Problem löst.
Ivan
4
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
So konvertieren Sie einen stringmit 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
Antworten:
So was:
Alternativ können Sie Folgendes verwenden,
eval()
wenn Sie der Sicherheit der Zeichenfolge vertrauen:quelle
pickle
ob Sie Objekte für Zeichenfolgen beibehalten .Nur um die vorhandenen Antworten zu ergänzen: Hoffentlich werden Sie in Zukunft auf etwas Ähnliches stoßen:
Aber womit Sie sich gerade beschäftigen , lesen Sie die Antwort von @ Cameron .
quelle
Der folgende Python-Code verwandelt Ihre Zeichenfolge in eine Liste von Zeichenfolgen:
quelle
json
zum Beispiel auch verwenden :json.loads(teststr)
Ich glaube nicht, dass du brauchst zu
In Python müssen Sie eine Zeichenfolge selten in eine Liste konvertieren, da Zeichenfolgen und Listen sehr ähnlich sind
Typ ändern
Wenn Sie wirklich eine Zeichenfolge haben, die ein Zeichenarray sein sollte, gehen Sie folgendermaßen vor:
Typ nicht ändern
Beachten Sie, dass Strings Listen in Python sehr ähnlich sind
Strings haben Accessoren wie Listen
Zeichenfolgen sind wie Listen iterierbar
TLDR
Zeichenfolgen sind Listen. Fast.
quelle
Wenn Sie nach Leerzeichen teilen möchten, können Sie einfach Folgendes verwenden
.split()
:Ausgabe:
quelle
()
, dh überhaupt nichts.Wenn Sie tatsächlich Arrays möchten:
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:
quelle
quelle
Alle Antworten sind gut, es gibt eine andere Möglichkeit, nämlich das Listenverständnis, siehe die folgende Lösung.
Für eine durch Kommas getrennte Liste gehen Sie wie folgt vor
quelle
Ich benutze normalerweise:
die
strip
Leerzeichen um Wörter entfernen.quelle
So konvertieren Sie einen
string
mit dem Formular, dasa="[[1, 3], [2, -6]]"
ich geschrieben habe, noch nicht optimierten Code:quelle
Sie sollten das eingebaute verwenden
translate
Methode für Zeichenfolgen verwenden.Geben Sie
help('abc'.translate)
in die Python-Shell ein, um weitere Informationen zu erhalten.quelle
Verwenden von funktionalem Python:
quelle
Beispiel 1
Beispiel 2
quelle