Метод replace() в Python

В отличие от большинства языков программирования, зародившихся в начале второй половины XX века, ЯП Python отличается широким базовым функционалом для работы со стрингами (так называется строковый тип данных).

Здесь вам и срезы, и умножения символов, и даже мгновенное перемещение по строке с заданным шагом. Но самая крутая фишка, свойственная питону, это возможность отдельно работать не только с символами строки, но и с подстроками, например, с помощью функции replace в python.

Что делает метод replace() в Python

Для тех, кто немного владеет английским, перевод названия функции не составил труда. Для остальных слово с английского переводится – заменить. Только заменить что? Может русские буквы на английские, арабские цифры на римские или что-то еще. На самом деле применение более простое, но практичное. Метод используется для замены всех (или только нескольких первых, зависит от аргументов) символов на другие.

Это может быть полезно, когда необходимо подготовить текст для дальнейшей обработки. Например, в вашей программе необходимо узнать у пользователя имя файла, куда будут записаны данные. Так вот, для названия файла в Windows нельзя использовать некоторые символы.  С помощью метода replace разработчик может заменить запрещенные символы на разрешенные (более подробно этот пример рассмотрим немного ниже).

Второе применение – это стандартизация текста путем замены подстроки в ЯП python. Допустим, нужно сделать текст более официальным, а потому минимизировать синонимы. В тексте используются слова «дом», «жилье», «место жительства», «частный сектор», «обитель» и другие. С помощью replace питон автоматически прочитает весь текст и заменит все эти слова на одно единственное, пусть это будет «дом». В общем, применение широкое, осталось разобраться, как это делать.

Применение replace

Синтаксис метода выглядит следующим образом:

str_name = str_name.replace(“подстрока, которую нужно найти и заменить” {строка}, “подстрока, на которую нужно заменить найденную часть” {строка}, количество первых символов для замены {целое число} )

Последний аргумент является необязательным, а опциональным. Если его не указывать, то функция будет находить и заменять все внутри строки. Рассмотрим простое пример: программа, заменяющая все буквы «о» на «а». Решение:

string_with_o = "В этом тексте есть несколько букв \"о\". Теперь о превратятся в а"
string_with_o = string_with_o.replace("о", "а")
print(string_with_o)

Заметьте, что мы применяем к строке метод, а после присваиваем измененный результат к той же строке. Дело в том, что в питоне строки неизменяемы, а потому их приходится перезаписывать.

Результат выполнения программы
Результат выполнения программы

Попробуем создать другую программу, в которой заменяется только определенное количество первых элементов. Допустим, эта программа будет заменять число 1 на то, которое введет пользователь. Реализация:

sub_repl = input("Введите число для замены:")
before_string = "В 1 году в 1 царстве у короля был 1 гонец(-ов).\
Гонцы распространяли вести в каждый район. Районов, к слову было 1.\
И вот, 1 час(-а) работы гонца стоил 1 рубль(-ей)"
before_string = before_string.replace("1", sub_repl, 4) # будут заменены первые 4 совпадений
print(before_string)

Как обычно, результат скриншотом.

Результат выполнения программы
Результат выполнения программы

Вас, возможно, смущает разделение строки на половине предложения и появление символов «\», который в тексте нет. Эти символы сообщают интерпретатору, что фраза не оборвалась, а продолжилась на новой строке. 

И третий пример – это замена не одного символа, а целой подстроки в строке python. Допустим, у нас есть диалог трех зверей, надо заменить их на других зверей. Перейдем к коду:

dialog = """Лиса: реплика лисы
Медведь: реплика медведя
Волк: реплика волка
Медведь: еще одна реплика
Волк: Звук согласия
Лиса: реплика с вопросом
Медведь: агрессивный ответ
"""
dialog = dialog.replace("Лиса", "Лемур")
dialog = dialog.replace("Медведь", "Коала")
dialog = dialog.replace("Волк", "Панда")
print(dialog)

Не будем обращать внимание на то, что эти трое никогда не встретятся, а посмотрим на результат программы.

Результат выполнения программы
Результат выполнения программы

Вы могли заметить, что это чем-то похоже на функцию «найти и заменить» в текстовом редакторе. Учитывая, как часто эта функция используется там, в программировании она тем более незаменима.

Заключение

Заменять текст в программировании приходится довольно часто. Это человеку легко даже по отдаленным синонимам понять, о чем идет речь. А компьютеру нужно структурировать все данные в один формат, иначе путаницы не избежать. А на этом у нас все. Надеемся, что вы поняли принцип работы функции replace в python. 

Старый мем, хорошо описывающий важность замен

Метод replace() в Python

Айтистанция
Добавить комментарий