Existe-t-il une fonction en Python permettant de scinder une chaîne sans ignorer les espaces?

StackOverflow https://stackoverflow.com/questions/113534

  •  02-07-2019
  •  | 
  •  

Question

Existe-t-il une fonction en Python permettant de scinder une chaîne sans ignorer les espaces de la liste résultante?

E.g:

s="This is the string I want to split".split()

me donne

>>> s
['This', 'is', 'the', 'string', 'I', 'want', 'to', 'split']

Je veux quelque chose comme

['This',' ','is',' ', 'the',' ','string', ' ', .....]
Était-ce utile?

La solution

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

L'utilisation des parenthèses de capture dans re.split () entraîne également le renvoi des séparateurs par la fonction.

Autres conseils

Je ne pense pas qu'il y ait une fonction dans la bibliothèque standard qui le fait toute seule, mais "partition". se rapproche

Le meilleur moyen est probablement d'utiliser des expressions régulières (c'est ce que je ferais dans n'importe quelle langue!)

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

Réponse idiote juste pour le diable:

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

La difficulté avec ce que vous essayez de faire est de ne pas lui donner de personnage sur lequel se scinder. split () explose une chaîne sur le caractère que vous lui avez fourni et supprime ce caractère.

Cela pourrait peut-être 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 ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top