2008-09-22 6 views
62

Gibt es in Python eine Funktion, um ein Wort in eine Liste einzelner Buchstaben aufzuteilen? zB:Gibt es in Python eine Funktion, um ein Wort in eine Liste aufzuteilen?

s="Word to Split" 

zu bekommen

wordlist=['W','o','r','d','','t','o' ....] 
+0

gerade diese Dokumentation finden Sie unter: http: //docs.python. org/library/stdtypes.html –

+4

Alter Thread, aber es ist erwähnenswert: Die meiste Zeit müssen Sie das überhaupt nicht tun. Auf die Zeichen einer Python-Zeichenfolge kann direkt als Liste zugegriffen werden. 's [2]' ist 'r' und 's [: 4]' ist 'Wort' und 'len (s)' ist 13. Sie können auch über sie iterieren: 'für char in s: print char' – domoarrigato

Antwort

159
>>> list("Word to Split") 
['W', 'o', 'r', 'd', ' ', 't', 'o', ' ', 'S', 'p', 'l', 'i', 't'] 
+2

Jeder Grund, warum Sie wissen, warum "Word to Split" .split ('') nicht das Gleiche tut. Es tut es nicht, aber es scheint wirklich so, wie es sollte. –

+2

@Walter Nissen: Ich bekomme "ValueError: leere Trennzeichen", wenn Sie das versuchen. Die leere Regex ist nicht besonders gut definiert. –

+0

Gibt es kein Trennzeichen für die Verwendung von 'split()', um die Zeichen zu erhalten? 'split()' nimmt ein zweites Argument * maxsplits *, aber es gibt keine Entsprechung mit 'list()'. Natürlich gibt es Work arounds ... –

12

Der einfachste Weg, wahrscheinlich nur ist list() zu verwenden, aber es gibt zumindest eine andere Option als auch:

s = "Word to Split" 
wordlist = list(s)    # option 1, 
wordlist = [ch for ch in s]  # option 2, list comprehension. 

Sie sollte sowohl geben Sie, was Sie brauchen:

['W','o','r','d',' ','t','o',' ','S','p','l','i','t'] 

Wie bereits erwähnt, die erste für Ihr Beispiel wahrscheinlich die am meisten bevorzugte ist, aber es gibt Anwendungsfälle, die letztere ganz praktisch für komplexere Sachen machen kann, wie zum Beispiel, wenn Sie wollen eine beliebige Funktion auf die Elemente anzuwenden, wie mit:

[doSomethingWith(ch) for ch in s] 
2

wird die Liste Funktion dieses tun

>>> list('foo') 
['f', 'o', 'o'] 
3

Missbrauch der Regeln, das gleiche Resultat: (x für x in 'Word to split')

Eigentlich ein Iterator, keine Liste. Aber es ist wahrscheinlich, dass du dich nicht wirklich darum kümmern wirst.

+0

Natürlich ist ''Word to split'', das direkt verwendet wird, auch ein iterables seiner eigenen Zeichen, so dass der Generatorausdruck nur sinnloses Wrapping ist. – ShadowRanger

+0

Ich denke, das ist die beste Lösung. – peterb

1

Hier ist einfach eine Zeile Lösung

>>> mystring = "This is my string" 
>>> list(mystring) 
['T', 'h', 'i', 's', ' ', 'i', 's', ' ', 'm', 'y', ' ', 's', 't', 'r', 'i', 'n', 'g'] 

Sie sehen können, auch die weißen Räume auch in der Liste auf ein Element umgewandelt

Verwandte Themen