What's the best way to "periodically" replace characters in a string in Python?

Viewed 644

I have a string where a character ('@') needs to be replaced by characters from a list of one or more characters "in order" and "periodically". So for example I have

'ab@cde@@fghi@jk@lmno@@@p@qrs@tuvwxy@z'

and want

'ab1cde23fghi1jk2lmno312p3qrs1tuvwxy2z'

for replace_chars = ['1', '2', '3']

The problem is that in this example there are more @ in the string than I have replacers.

This is my try:

result = ''
replace_chars = ['1', '2', '3']
string = 'ab@cde@@fghi@jk@lmno@@@p@qrs@tuvwxy@z'

i = 0
for char in string:
    if char == '@':
        result += replace_chars[i]
        i += 1
    else:
        result += char

print(result)

but this only works of course if there are not more than three @ in the original string and otherwise I get IndexError.

Edit: Thanks for the answers!

4 Answers
Related