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?

Respuestas a la pregunta(10)

Su respuesta a la pregunta