special = dict.fromkeys(string.punctuation + string.whitespace, True)
s = 'One two  three    tab\ttabandspace\t end'
[''.join(g) for k, g in groupby(s, special.get)]
Эффективно разделить строку, используя несколько разделителей и сохранив каждый разделитель?