Existe uma maneira rápida no Python de substituir seqüências de caracteres, mas, em vez de começar do começo como no começo replace
, do final? Por exemplo:
>>> 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>'
Respostas:
fonte
.replace
método usa um terceiro argumento opcional 'count', que informa para substituir as primeiras n ocorrências. Não seria intuitivo se isso levasse um -1, mas infelizmente não será, então precisamos da sua solução.Não vou fingir que essa é a maneira mais eficiente de fazer isso, mas é uma maneira simples. Ele inverte todas as strings em questão, executa uma substituição comum usando
str.replace
as strings invertidas e depois reverte o resultado da maneira correta:fonte
Aqui está uma frase:
e um exemplo completo disso em uso:
fonte
line = "".join(line.rsplit(",", 1))
mantendo espaço de preenchimento posteriormente.Apenas inverta a string, substitua a primeira ocorrência e inverta-a novamente:
Resultado:
fonte
Se você souber que a string 'antiga' não contém caracteres especiais, é possível fazer isso com uma regex:
fonte
Aqui está uma solução recursiva para o problema:
fonte