В Python много функций для работы со строками. Одна из них, replace(), позволяет заменить символ в строке или даже поменять целую подстроку. Это бывает полезно, если нужно привести текст к единому виду или отредактировать с помощью Python.
Рассказываем, как работает replace(), что она умеет и можно ли с ее помощью заменить несколько подстрок за раз.
Как работает replace() в Python
Метод replace() заменяет часть строки на другую. Это может быть отдельный символ, пробел или подстрока, которая состоит из нескольких символов. В зависимости от параметров, которые передал методу разработчик, replace() может заменить:
- все вхождения определенной подстроки — например, все слова «ели» во фразе «ели еле-еле ели ели»;
- заданное количество вхождений — например, только одно слово «ели» в той же фразе.
Метод анализирует строку, начиная с первых символов. То есть, если заменить нужно заданное количество вхождений — он заменит те, что появляются в строке раньше.
Например, если отдать методу команду заменить одно слово «ели» на «бобры» — получится фраза «бобры еле-еле ели ели». Заменится только первое «ели», а не последующие.
Особенности метода
У замены подстроки в строке в Python есть несколько особенностей. Запомните их, чтобы избежать ошибок.
Зависит от регистра. Заглавные и маленькие буквы в методе replace() считаются разными символами. То есть, если в фразе «Привет, привет!» заменить слово «привет» на «пока» — получится «Привет, пока!». Первое «Привет» замена не затронет — оно написано с заглавной буквы, и метод воспринимает его как другую подстроку.
Создает новую строку. Строки в Python — неизменяемые объекты. Поэтому replace() не изменяет существующую строку, а создает ее копию. Ее можно записать в переменную, отправить в функцию. При этом исходная строка, которую передали как параметр, не изменится.
Если на исходную строку все еще есть ссылки, она сохранится в памяти. Если же ссылок нет, со временем исходную строку удалит сборщик мусора. Например, так бывает, когда переменную, где хранилась исходная строка, перезаписывают — присваивают ей какое-то новое значение.
Имеет разное написание. В зависимости от версии Python метод может называться по-разному. До третьей версии языка его написание выглядело как string.replace(). Начиная с Python 3.0 метод пишется как str.replace() или просто replace(). Это стоит помнить, если вы работаете с разными версиями Python.
Параметры метода replace()
Метод можно вызвать для любой строки: после ее названия пишется точка, а затем слово replace(). В скобках указывают параметры, которые описывают, что и на что нужно заменить.
Вызов метода выглядит так:
some_string.replace(old, new, count)
Здесь some_string — это строка, которую нужно изменить. А old, new и count — параметры:
- old — символ или подстрока, которые нужно заменить на другие;
- new — символ или подстрока, на которые нужно заменить old;
- count — количество замен, которые нужно сделать. Если не указать этот параметр, заменятся все вхождения нужной подстроки.
Параметры old и new указывают обязательно — иначе метод не поймет, что именно ему нужно сделать. Count можно не указывать. Но это стоит сделать, если заменить необходимо конкретное количество вхождений, например только одно.
Например, чтобы заменить первое слово «ели» в строке «ели еле-еле ели ели», можно сделать так:
spruce_string.replace(‘ели’, ‘бобры’, 1)
Параметры old и new — строки, поэтому их значения пишутся в одинарных скобках. Также можно указать в качестве этих параметров переменные, в которых записаны строковые значения.
Что получается на выходе
Метод возвращает строку, в которой заменены нужные вхождения — подстроки или символы. Например, для примера выше результатом будет строка «бобры еле-еле ели ели». Но если вызвать метод просто так, этот результат никуда не запишется.
Чтобы сохранить результат, его можно присвоить какой-то переменной. Например, так:
beaver_string = spruce_string.replace(‘ели’, ‘бобры’, 1)
В таком случае измененная строка сохранится в переменной beaver_string. А строка spruce_string останется прежней: строки в Python — неизменяемые объекты. Единственное, что можно сделать, — присвоить переменной spruce_string новое значение. Например, с помощью того же метода replace():
spruce_string = spruce_string.replace(‘ели’, ‘бобры’, 1)
В этом случае результат работы метода запишется в ту же переменную, в которую изначально была записана исходная строка.
Кроме того, можно передать результат работы replace() в какую-то другую функцию или выражение. Например, сложить с другой строкой или использовать как параметр для другого метода.
Кратко о методе replace() в Python
- replace() — функция для замены символов и подстрок в Python. Она получает строку и создает ее копию, где заменены указанные элементы.
- У replace() три параметра: подстрока, которую нужно заменить, подстрока или элемент, на которые нужно заменить, и количество замен. Третий параметр необязательный: если его не указать, метод заменит все вхождения подстроки.
- Метод replace() — регистрозависимый. Заглавные и строчные буквы для него — разные символы.