Это должно работать:
letters = list(s[::2])
nums = list(s[1::2])
res = ''.join([a*int(b) for a,b in zip(letters,nums)])
>>res
Out[1]: 'aaabbbb'
EDIT:
Если вы хотите сопоставить любой srting и любые цифры, вы должны использовать регулярное выражение:
letters = re.findall(r'[a-z]+',s)
nums = re.findall(r'\d+',s)
res = ''.join([a*int(b) for a,b in zip(letters,nums)])
для:
s='a10b3'
вывод:
>>res
Out[2]: 'aaaaaaaaaabbb'