2008-09-22 9 views

Répondre

40
>>> import re 
>>> re.split(r"(\s+)", "This is the string I want to split") 
['This', ' ', 'is', ' ', 'the', ' ', 'string', ' ', 'I', ' ', 'want', ' ', 'to', ' ', 'split'] 

En utilisant les parenthèses de capture dans re.split() provoque la fonction pour renvoyer les séparateurs aussi.

+0

Ceci est une solution plus propre que celle que j'ai posté ci-dessus. – rossp

1

La partie difficile avec ce que vous essayez de faire est que vous n'êtes pas en lui donnant un caractère à diviser. split() explose une chaîne sur le caractère que vous lui fournissez et supprime ce caractère.

Peut-être que cela peut aider:

s = "String to split" 
mylist = [] 
for item in s.split(): 
    mylist.append(item) 
    mylist.append(' ') 
mylist = mylist[:-1] 

Messy, mais ça va faire l'affaire pour vous ...

+0

avec un espace supplémentaire qui n'existe pas à la fin ... – Mez

+0

Je viens de mis à jour cette code à r emove l'espace final. Cela dit, ce n'est toujours pas la meilleure façon de le faire, juste * un * moyen de le faire :) – rossp

4

Je ne pense pas qu'il y ait une fonction dans la bibliothèque standard qui fait que par lui-même, mais « partition » se rapproche

La meilleure façon est probablement d'utiliser des expressions régulières (ce qui est la façon dont je ferais ce dans toutes les langues)

import re 
print re.split(r"(\s+)", "Your string here") 
2

réponse idiote juste pour le fun:

mystring.replace(" ","! !").split("!") 
Questions connexes