result = []
prev, count = None, 0
for c in s+"\0": # note: assuming "\0" can't be in `s`
if c != prev: # starting new sequence
if count: # save count for old sequence
result.append((prev, count))
prev, count = c, 1 # reset count
else: # continuation of old sequence
count += 1
Here's solution that doesn't use itertools.groupby() https://docs.python.org/3/library/itertools.html?highlight=i... :