Replace: примеры (PYTHON)

Функция replace в Python: полный обзор с примерами применения
Раздел: Строки, Модификация строк
replace(old, new[, count]): str

Описание метода replace

Метод replace() в Python используется для замены всех вхождений указанной подстроки в строке на другую подстроку. Этот метод принадлежит к классу str и возвращает новую строку с выполненными заменами, не изменяя исходную строку, поскольку строки в Python являются неизменяемыми объектами.

Использование метода целесообразно при необходимости массовой замены фрагментов текста, очистки данных, трансформации строковых значений или подготовки текста для дальнейшей обработки.

Параметры метода

  • old - обязательный параметр, строка, которая будет заменена. Если параметр не найден в исходной строке, возвращается копия исходной строки без изменений.
  • new - обязательный параметр, строка, на которую будет произведена замена. Может быть пустой строкой для удаления фрагментов.
  • count - необязательный параметр, целое число, определяющее максимальное количество замен. Если параметр не указан, заменяются все вхождения. При отрицательном значении также заменяются все вхождения.

Возвращаемое значение

Метод возвращает новую строку, в которой все вхождения подстроки old заменены на подстроку new, с учетом ограничения по количеству замен, если параметр count был указан.

Базовые примеры использования

Пример простой замены подстроки:

text = "Я изучаю Python"
new_text = text.replace("Python", "программирование")
print(new_text)
Я изучаю программирование

Замена с указанием количества замен:

text = "яблоко яблоко яблоко яблоко"
new_text = text.replace("яблоко", "груша", 2)
print(new_text)
груша груша яблоко яблоко

Удаление фрагментов строки с помощью замены на пустую строку:

text = "Телефон: +7(123)456-78-90"
clean_text = text.replace("(", "").replace(")", "").replace("-", "")
print(clean_text)
Телефон: +71234567890

Альтернативные методы в Python

  • re.sub() из модуля re - позволяет выполнять замены с использованием регулярных выражений, что дает больше гибкости для сложных паттернов замены.
  • str.translate() с str.maketrans() - эффективен для замены отдельных символов или выполнения множественных замен в одной операции.
  • str.join() с str.split() - может использоваться для сложных преобразований, особенно когда требуется обработать разделители.

Метод replace() предпочтительнее для простых и прямых замен фиксированных подстрок, в то время как re.sub() лучше подходит для замен по сложным шаблонам.

Распространенные ошибки

Изменение исходной строки:

text = "Пример текста"
text.replace("текста", "строки")
print(text)
Пример текста

Исходная строка не изменилась, так как метод возвращает новую строку. Нужно присвоить результат переменной.

Неправильный порядок аргументов:

text = "Пример"
new_text = text.replace(new="Новый", old="Пример")
TypeError: replace() takes no keyword arguments

Метод replace() не поддерживает именованные аргументы, только позиционные.

Замена части совпадающей подстроки:

text = "abcabc"
new_text = text.replace("abc", "ab")
print(new_text)
abab

После замены "abc" на "ab" новые вхождения "ab" не затрагиваются, так как метод работает с исходной строкой.

Изменения в последних версиях Python

В Python 3.9 параметр count стал опциональным с значением -1 для замены всех вхождений, что не изменило фактическое поведение, но сделало документацию более четкой.

В Python 3.10 не было внесено изменений в работу метода replace(), но улучшены связанные строковые методы и производительность.

Расширенные примеры использования

Множественные замены в цепочке:

Пример python
text = "{name} имеет {count} яблок"
new_text = text.replace("{name}", "Анна").replace("{count}", "5")
print(new_text)
Анна имеет 5 яблок

Обработка текста с сохранением исходных данных:

Пример python
original = "Цена: 100 руб."
display = original.replace("руб.", "₽")
print(f"Оригинал: {original}")
print(f"Для отображения: {display}")
Оригинал: Цена: 100 руб.
Для отображения: Цена: 100 ₽

Замена с отрицательным значением count:

Пример python
text = "ааааа"
new_text = text.replace("а", "б", -3)
print(new_text)
ббббб

Отрицательное значение приводит к замене всех вхождений, аналогично отсутствию параметра.

Использование для простого шифрования заменой символов:

Пример python
alphabet = "абвгдежзийклмнопрстуфхцчшщъыьэюя"
cipher = "гдежзийклмнопрстуфхцчшщъыьэюяабв"
text = "привет мир"
encrypted = ""
for char in text:
    if char in alphabet:
        idx = alphabet.index(char)
        encrypted += cipher[idx]
    else:
        encrypted += char
print(encrypted)
тулезх рлу

Аналоги в других языках программирования

JavaScript:

let text = "Hello World";
let newText = text.replace("World", "JavaScript");
console.log(newText);
Hello JavaScript

В JavaScript метод replace() заменяет только первое вхождение по умолчанию. Для замены всех вхождений используется регулярное выражение с флагом g.

PHP:

$text = "Hello World";
$newText = str_replace("World", "PHP", $text);
echo $newText;
Hello PHP

Функция str_replace() в PHP заменяет все вхождения, имеет вариант без учета регистра str_ireplace() и может работать с массивами.

Java:

String text = "Hello World";
String newText = text.replace("World", "Java");
System.out.println(newText);
Hello Java

В Java методы replace() заменяют все вхождения, а replaceFirst() и replaceAll() работают с регулярными выражениями.

питон replace function comments

En
Replace Replace substring