Есть ли в Python быстрый способ заменить строки, но вместо того, чтобы начинать с начала, как replace
делает, начиная с конца? Например:
>>> 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>'
Ответы:
источник
.replace
Метод принимает третий необязательный аргумент «Count» , который говорит, чтобы заменить первые п вхождения. Не было бы интуитивно понятно, если бы это приняло -1, но, к сожалению, это не так, поэтому нам нужно ваше решение.Я не собираюсь делать вид, что это самый эффективный способ сделать это, но это простой способ. Он переворачивает все рассматриваемые строки, выполняет обычную замену с использованием
str.replace
перевернутых строк, а затем возвращает результат обратно в правильном направлении:источник
Вот одна строка:
и полный пример этого в использовании:
источник
line = "".join(line.rsplit(",", 1))
оставляя после себя отступы.Просто переверните строку, замените первое вхождение и снова переверните его:
Вывод:
источник
Если вы знаете, что «старая» строка не содержит специальных символов, вы можете сделать это с помощью регулярного выражения:
источник
Вот рекурсивное решение проблемы:
источник