Dividir cadena en “. ”,“! ”O“? ”Manteniendo el signo de puntuación

Posible duplicado:
Python split () sin eliminar el delimitador

Deseo dividir una cadena de la siguiente manera:

text = " T?e qu!ck ' brown 1 fox! jumps-.ver. the 'lazy' doG? !" result -> (" T?e qu!ck ' brown 1 fox!", "jumps-.ver.", "the 'lazy' doG?", "!") 

Básicamente, quiero dividir en ". " , "! " O "? " Pero quiero que se eliminen los espacios en los puntos de división pero no el punto, la coma o el signo de interrogación.

¿Cómo puedo hacer esto de una manera eficiente?

La función de división de str toma solo en el separador. Me pregunto cuál es la mejor solución para dividir en todos los espacios y luego encontrar aquellos que terminan con puntos, comas o interrogantes al construir el resultado requerido.

Puedes lograr esto usando una división de expresiones regulares:

 >>> import re >>> text = " T?e qu!ck ' brown 1 fox! jumps-.ver. the 'lazy' doG? !" >>> re.split('(?<=[.!?]) +',text) [" T?e qu!ck ' brown 1 fox!", 'jumps-.ver.', "the 'lazy' doG?", '!'] 

La expresión regular '(?<=[.!?]) +' Significa hacer coincidir una secuencia de uno o más espacios ( ' +' ) solo si está precedida por a.,! o? carácter ( '(?<=[.!?])' ).