Ich habe eine Zeichenfolge, bei der ein Zeichen ('@') durch Zeichen aus einer Liste von einem oder mehreren Zeichen "in der Reihenfolge" und "periodisch" ersetzt werden muss. So zum Beispiel habe ichWas ist der beste Weg, um Zeichen in einer Zeichenfolge in Python "regelmäßig" zu ersetzen?
'[email protected]@@[email protected]@[email protected]@@[email protected]@[email protected]'
und wollen
'ab1cde23fghi1jk2lmno312p3qrs1tuvwxy2z'
für replace_chars = ['1', '2', '3']
Das Problem ist, dass es in diesem Beispiel mehr @ in der Zeichenfolge sind als ich Ersatzgeräte.
Dies ist mein Versuch:
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)
aber dies funktioniert nur natürlich, wenn es nicht mehr als drei @ in der ursprünglichen Zeichenfolge und sonst bekomme ich Indexerror.
Edit: Danke für die Antworten!
Verwenden Sie 'replace_chars [i% replace_chars.length]'. dann machst du nur bis zu "modulo" der Länge im Index. z.B. mit 3 Zeichen, du machst '1% 3 -> 1',' 2% 3 -> 2', '3% 3 -> 0',' 4% 3 -> 1', etc ... –
Add 'i % = 3' unter 'i + = 1' –