我认为返回相应接头的开始和结束更为自然。例如(0,4)而不是(0,3)
>>> from itertools import groupby
>>> def splitWithIndices(s, c=' '):
... p = 0
... for k, g in groupby(s, lambda x:x==c):
... q = p + sum(1 for i in g)
... if not k:
... yield p, q # or p, q-1 if you are really sure you want that
... p = q
...
>>> a = "This is a sentence"
>>> list(splitWithIndices(a))
[(0, 4), (5, 7), (8, 9), (10, 18)]
>>> a[0:4]
'This'
>>> a[5:7]
'is'
>>> a[8:9]
'a'
>>> a[10:18]
'sentence'