Ho una stringa in cui un carattere ('@') deve essere sostituito da caratteri da un elenco di uno o più caratteri "in ordine" e "periodicamente". Così, per esempio io hoQual è il modo migliore per "periodicamente" sostituire i caratteri in una stringa in Python?
'[email protected]@@[email protected]@[email protected]@@[email protected]@[email protected]'
e vogliono
'ab1cde23fghi1jk2lmno312p3qrs1tuvwxy2z'
per replace_chars = ['1', '2', '3']
Il problema è che in questo esempio ci sono più @ nella stringa di me sostituti.
Questo è il mio tentativo:
result = ''
replace_chars = ['1', '2', '3']
string = '[email protected]@@[email protected]@[email protected]@@[email protected]@[email protected]'
i = 0
for char in string:
if char == '@':
result += replace_chars[i]
i += 1
else:
result += char
print(result)
ma questo funziona solo, naturalmente, se ci sono non più di tre @ nella stringa originale e altrimenti mi IndexError.
Modifica: Grazie per le risposte!
usare 'replace_chars [i% replace_chars.length]'. poi fai solo il "modulo" della lunghezza dell'indice. per esempio. con 3 caratteri, fai '1% 3 -> 1',' 2% 3 -> 2', '3% 3 -> 0',' 4% 3 -> 1', ecc ... –
Aggiungi 'i % = 3' sotto 'i + = 1' –