RegEx Tokenizer para dividir un texto en palabras, dígitos y signos de puntuación

Lo que quiero hacer es dividir un texto en sus elementos finales.

Por ejemplo:

from nltk.tokenize import * txt = "A sample sentences with digits like 2.119,99 or 2,99 are awesome." regexp_tokenize(txt, pattern='(?:(?!\d)\w)+|\S+') ['A','sample','sentences','with','digits','like','2.199,99','or','2,99','are','awesome','.'] 

Puedes ver que funciona bien. Mi problema es: ¿Qué sucede si el dígito está al final de un texto?

 txt = "Today it's 07.May 2011. Or 2.999." regexp_tokenize(txt, pattern='(?:(?!\d)\w)+|\S+') ['Today', 'it', "'s", '07.May', '2011.', 'Or', '2.999.'] 

El resultado debe ser: [‘Today’, ‘it’, “‘s’, ’07 .May ‘,’ 2011 ‘,’. ‘,’ Or ‘,’ 2.999 ‘,’. ‘]

¿Qué tengo que hacer para obtener el resultado anterior?

Creé un patrón para tratar de incluir puntos y comas dentro de palabras, números. Espero que esto ayude:

 txt = "Today it's 07.May 2011. Or 2.999." regexp_tokenize(txt, pattern=r'\w+([.,]\w+)*|\S+') ['Today', 'it', "'s", '07.May', '2011', '.', 'Or', '2.999', '.']