¿Hay una manera rápida en Python para reemplazar cadenas pero, en lugar de comenzar desde el principio como lo replace
hace, comenzando desde el final? Por ejemplo:
>>> 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>'
Respuestas:
fuente
.replace
método toma un tercer argumento opcional 'cuenta' que le dice que reemplace las primeras n apariciones. No hubiera sido intuitivo si eso tomara un -1, pero desafortunadamente no lo hará, por lo que necesitamos su solución.No voy a pretender que esta es la forma más eficiente de hacerlo, pero es una forma simple. Invierte todas las cadenas en cuestión, realiza un reemplazo ordinario utilizando
str.replace
las cadenas invertidas, luego invierte el resultado de la manera correcta:fuente
Aquí hay una frase:
y un ejemplo completo de esto en uso:
fuente
line = "".join(line.rsplit(",", 1))
manteniendo el espacio de relleno después.Simplemente invierta la cadena, reemplace la primera aparición y vuelva a invertirla:
Salida:
fuente
Si sabe que la cadena 'antigua' no contiene ningún carácter especial, puede hacerlo con una expresión regular:
fuente
Aquí hay una solución recursiva al problema:
fuente