Wie kann ich eine Zeichenfolge in eine Liste von Zeichen aufteilen? str.split
funktioniert nicht.
"foobar" ['f', 'o', 'o', 'b', 'a', 'r']
Wie kann ich eine Zeichenfolge in eine Liste von Zeichen aufteilen? str.split
funktioniert nicht.
"foobar" ['f', 'o', 'o', 'b', 'a', 'r']
Ich habe zwei weitere Möglichkeiten zur Bewältigung dieser Aufgabe untersucht. Das könnte für jemanden hilfreich sein.
Die erste ist einfach:
In [25]: a = []
In [26]: s = 'foobar'
In [27]: a += s
In [28]: a
Out[28]: ['f', 'o', 'o', 'b', 'a', 'r']
Und die zweite verwendet map
y lambda
Funktion. Sie kann für komplexere Aufgaben geeignet sein:
In [36]: s = 'foobar12'
In [37]: a = map(lambda c: c, s)
In [38]: a
Out[38]: ['f', 'o', 'o', 'b', 'a', 'r', '1', '2']
Zum Beispiel
# isdigit, isspace or another facilities such as regexp may be used
In [40]: a = map(lambda c: c if c.isalpha() else '', s)
In [41]: a
Out[41]: ['f', 'o', 'o', 'b', 'a', 'r', '', '']
見る Python-Dokumente für weitere Methoden
Die Aufgabe besteht darin, über die Zeichen der Zeichenkette zu iterieren und sie in einer Liste zu sammeln. Die naivste Lösung würde wie folgt aussehen
result = []
for character in string:
result.append(character)
Natürlich kann man es auch abkürzen und nur
result = [character for character in string]
aber es gibt auch kürzere Lösungen, die das Gleiche bewirken.
list
Konstruktor kann verwendet werden, um jede iterierbar (Iteratoren, Listen, Tupel, Strings usw.) in eine Liste.
>>> list('abc')
['a', 'b', 'c']
Das große Plus ist, dass es sowohl in Python 2 als auch in Python 3 gleich funktioniert.
Außerdem kann ab Python 3.5 (dank der großartigen PEP 448 ) ist es nun möglich, eine Liste aus einer beliebigen Iterablen zu erstellen, indem man sie in ein leeres Listenliteral entpackt:
>>> [*'abc']
['a', 'b', 'c']
Dies ist übersichtlicher und in einigen Fällen effizienter als der Aufruf von list
Konstruktor direkt.
Ich würde von der Verwendung von map
-basierten Ansätzen, denn map
tut no in Python 3 eine Liste zurückgeben. Siehe Verwendung von Filter, Map und Reduce in Python 3 .
split()
Die eingebaute Funktion trennt den Wert nur auf der Grundlage einer bestimmten Bedingung, aber in einem einzigen Wort kann sie die Bedingung nicht erfüllen. Das Problem kann also mit Hilfe der folgenden Methode gelöst werden list()
. Es ruft intern das Array auf und speichert den Wert auf der Grundlage eines Arrays.
Angenommen,
a = "bottle"
a.split() // will only return the word but not split the every single char.
a = "bottle"
list(a) // will separate ['b','o','t','t','l','e']
So teilen Sie eine Zeichenkette s
ist es am einfachsten, sie an list()
. Also,
s = 'abc'
s_l = list(s) # s_l is now ['a', 'b', 'c']
Sie können auch ein Listenverständnis verwenden, das zwar funktioniert, aber nicht so prägnant ist wie das oben beschriebene:
s_l = [c for c in s]
Es gibt auch noch andere Möglichkeiten, aber diese sollten ausreichen. Wenn Sie sie später neu kombinieren wollen, genügt ein einfacher Aufruf von "".join(s_l)
gibt Ihre Liste in ihrer ganzen früheren Pracht als Zeichenkette wieder...
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.
16 Stimmen
In Python sind Zeichenketten bereits Arrays von Zeichen für alle Zwecke außer der Ersetzung. Sie können sie zerschneiden, Elemente per Index referenzieren oder nachschlagen, usw.
5 Stimmen
Link zur anderen Richtung
0 Stimmen
見る stackoverflow.com/questions/743806 für die Aufteilung der Zeichenkette in Wörter.