Splitting a string by list of indices

indices, python, split, string

Solution

s = 'long string that I want to split up'
indices = [0,5,12,17]
parts = [s[i:j] for i,j in zip(indices, indices[1:]+[None])]

returns

['long ', 'string ', 'that ', 'I want to split up']

which you can print using:

print '\n'.join(parts)

Another possibility (without copying `indices`) would be:

s = 'long string that I want to split up'
indices = [0,5,12,17]
indices.append(None)
parts = [s[indices[i]:indices[i+1]] for i in xrange(len(indices)-1)]

Problem

I want to split a string by a list of indices, where the split segments begin with one index and end before the next one. Example: ``` s = 'long string that I want to split up' indices = [0,5,12,17] parts = [s[index:] for index in indices] for part in parts: print part ``` This will return: long string that I want to split up string that I want to split up that I want to split up I want to split up I'm trying to get: long string that I want to split up

Original source