s = 'ab@cde@@fghi@jk@lmno@@@p@qrs@tuvwxy@z'
replace_chars = ['1', '2', '3']
replacer = cycle(replace_chars)
"""""".join([(next(replacer) if c == '@' else c) for c in s])
Как лучше всего «периодически» заменять символы в строке в Python?