Dividir una cadena en palabras y puntuación
Estoy tratando de dividir una cadena en palabras y puntuación, agregando la puntuación a la lista producida por la división.
Por ejemplo:
>>> c = "help, me"
>>> print c.split()
['help,', 'me']
Lo que realmente quiero que se vea es la lista:
['help', ',', 'me']
Entonces, quiero que la cadena se divida en espacios en blanco con la puntuación dividida de las palabras.
Intenté analizar primero la cadena y luego ejecutar la división:
>>> for character in c:
... if character in ".,;!?":
... outputCharacter = " %s" % character
... else:
... outputCharacter = character
... separatedPunctuation += outputCharacter
>>> print separatedPunctuation
help , me
>>> print separatedPunctuation.split()
['help', ',', 'me']
Esto produce el resultado que quiero, pero es dolorosamente lento en archivos grandes.
¿Hay alguna manera de hacer esto de manera más eficiente?