2008-09-22 15 views

Respuesta

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

El uso de los paréntesis de captura en re.split() hace que la función para devolver los separadores también.

+0

Esta es una solución más limpia que la que publiqué anteriormente. – rossp

1

La parte difícil con lo que estamos tratando de hacer es que usted no está dándole un personaje para dividir. split() explota una cadena en el personaje que le proporcionas y elimina ese carácter.

Tal vez esto puede ayudar:

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

sucio, sino que va a hacer el truco para usted ...

+0

con un espacio extra que no existe en el extremo ... – Mez

+0

he acaba de actualizar esta codificar para r emove el espacio final. Dicho esto, todavía no es la mejor manera de hacerlo, solo * a * forma de hacerlo :) – rossp

4

No creo que hay una función en la biblioteca estándar que hace que por sí mismo, pero "partición" se acerca

La mejor manera es probablemente usar expresiones regulares (que es la forma en que lo haría esto en cualquier idioma)

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

tonta respuesta sólo por el gusto de hacerlo:

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