Gibt es in Python eine schnelle Möglichkeit, Zeichenfolgen zu ersetzen, aber anstatt wie am Anfang zu replace
beginnen, am Ende zu beginnen? Beispielsweise:
>>> def rreplace(old, new, occurrence)
>>> ... # Code to replace the last occurrences of old by new
>>> '<div><div>Hello</div></div>'.rreplace('</div>','</bad>',1)
>>> '<div><div>Hello</div></bad>'
Antworten:
quelle
.replace
Methode verwendet ein drittes optionales Argument 'count', das sie anweist, die ersten n Vorkommen zu ersetzen. Wäre es nicht intuitiv gewesen, wenn das ein -1 wie wäre, aber leider nicht, also brauchen wir Ihre Lösung.Ich werde nicht so tun, als wäre dies der effizienteste Weg, aber es ist ein einfacher Weg. Es kehrt alle fraglichen Zeichenfolgen um, führt einen normalen Austausch mit
str.replace
den umgekehrten Zeichenfolgen durch und kehrt dann das Ergebnis richtig herum um:quelle
Hier ist ein Einzeiler:
und ein vollständiges Beispiel dafür:
quelle
line = "".join(line.rsplit(",", 1))
und anschließend den Abstand zum Auffüllen beizubehalten.Kehren Sie einfach den String um, ersetzen Sie das erste Vorkommen und kehren Sie ihn erneut um:
Ausgabe:
quelle
Wenn Sie wissen, dass die 'alte' Zeichenfolge keine Sonderzeichen enthält, können Sie dies mit einem regulären Ausdruck tun:
quelle
Hier ist eine rekursive Lösung für das Problem:
quelle