2008-09-22 26 views
62

Existe-t-il une fonction en python pour diviser un mot en une liste de lettres simples? par exemple:Existe-t-il une fonction en python pour diviser un mot en liste?

s="Word to Split" 

pour obtenir

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

il suffit de consulter cette documentation: http: //docs.python. org/library/stdtypes.html –

+4

Ancien fil, mais il vaut la peine de le mentionner: la plupart du temps, vous n'avez pas besoin de le faire du tout. Les caractères d'une chaîne de Python peuvent être accédés comme une liste directement à savoir. 's [2]' est 'r', et 's [: 4]' est 'Word' et 'len (s)' est 13. Vous pouvez également parcourir: 'pour char in s: print char' – domoarrigato

Répondre

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

Si vous savez pourquoi "Word to Split" .split ('') ne fait pas la même chose. Ce n'est pas le cas, mais cela semble vraiment devoir être le cas. –

+2

@Walter Nissen: J'obtiens "ValueError: empty separator" en essayant cela. L'expression rationnelle vide n'est pas très bien définie. –

+0

N'y a-t-il pas de délimiteur pour utiliser 'split()' pour obtenir les caractères? 'split()' prend un deuxième argument * maxsplits *, mais il n'y a pas d'équivalent avec 'list()'. Bien sûr, il y a des contournements ... –

12

Le plus simple est probablement juste d'utiliser list(), mais il y a au moins une autre option ainsi:

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

Ils devrait les deux vous donner ce que vous avez besoin:

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

Comme indiqué, le premier est probablement le plus préférable pour votre exemple, mais il y a des cas d'utilisation qui peuvent rendre ce dernier très pratique pour des choses plus complexes, comme si vous voulez appliquer une fonction arbitraire aux éléments, comme avec:

[doSomethingWith(ch) for ch in s] 
2

La fonction liste fera cette

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

abus des règles, même résultat: (x pour x dans 'Word pour diviser')

En fait un itérateur, pas une liste. Mais il est probable que tu ne t'en soucies pas vraiment.

+0

Bien sûr, "Word to split" utilisé directement est aussi une itération de ses propres caractères, donc l'expression du générateur est juste un emballage inutile. – ShadowRanger

+0

Je pense que c'est la meilleure solution. – peterb

1

est ici solution simple d'une ligne

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

Vous pouvez voir, même les espaces blancs aussi convertis en un élément dans la liste

Questions connexes