Замена подстроки в строке
В строке найти и заменить одну подстроку на другую. Если одинаковых подстрок несколько, заменить все.
Решение задачи на языке программирования Python
У строк есть метод find
, который возвращает индекс первого символа подстроки в строке или -1, если подстрока не найдена.
Алгоритм решения задачи может быть таким:
- Находим первое вхождение подстроки в строке.
- Берем срез от начала строки до начала старой подстроки.
- Берем срез от конца старой подстроки до конца строки. Пунктами 2-3 мы как бы вырезаем старую подстроку.
- Соединяем начало строки, новую подстроку, конец строки.
- Проверяем оставшуюся часть строку на вхождение в нее старой подстроки.
things = "tree, box, chair, lamp, \n" \ "desk, cat, dog, grass, \n" \ "pig, box, lamp, shelf" print(things) print() old_item = input("Old item: ") new_item = input("New item: ") len_old_item = len(old_item) i = things.find(old_item) while i > 0: before = things[:i] after = things[i+len_old_item:] things = before + new_item + after i = things.find(old_item) print() print(things)
Пример выполнения:
tree, box, chair, lamp, desk, cat, dog, grass, pig, box, lamp, shelf Old item: box, New item: cube! tree, cube! chair, lamp, desk, cat, dog, grass, pig, cube! lamp, shelf
Однако на практике данную задачу проще выполнить, используя строковые методы split
и join
, а не find
. В этом случае строка сначала "разрезается" по вхождениям старой подстроки, а потом "сшивается" с помощью новой подстроки.
things = "tree, box, chair, lamp, desk, cat, \n" \ "dog, grass, pig, box, lamp, shelf" print(things) old_item = input("Old item: ") new_item = input("New item: ") list_of_things = things.split(old_item) things = new_item.join(list_of_things) print(things)
Здесь в переменную list_of_things записывается список, состоящий из подстрок исходной строки, из которой исключены строки old_item. Так если исходная строка
"белый, красный, сизый, белый, зеленый"
, и мы разделяем ее по слову "белый", то получится список
['', ', красный, сизый, ', ', зеленый']
С помощью метода join
мы соединяем элементы списка через строку, к которой применяется метод. В данном случае это новая подстрока new_item.