text_so_far = ''
for c in buffer:
    text_so_far += c
if text_so_far in codes:
    yield codes[text_so_far]
text_so_far = ''
if text_so_far:
    yield text_so_far
if __name__ == '__main__':
    message = '10100010011'
codes = {(97): '1', (98): '01', (107): '001', (114): '000'}
print(list(seach_replace(message, codes)))
Замена подстрок с помощью словаря в Python