Перейти к содержимому

Как работает replace python

  • автор:

Метод str.replace() в Python, меняет подстроку/символ в строке

Производит поиск и замену подстроки (символа) в строке

Синтаксис:
str.replace(old, new[, count]) 
Параметры:
  • old — str , подстрока или символ который меняем
  • new — str , подстрока или символ на который меняем
  • count — int , сколько раз меняем
Возвращаемое значение:
  • измененная копия строки.
Описание:

Метод str.replace() вернет копию строки, в которой все вхождения подстроки old заменены на подстроку new .

Если указан необязательный аргумент count , заменяются только первые вхождения count .

Примечание. Производить поиск и замену подстроки/символа в строке можно так же при помощи регулярных выражений, используя функцию re.sub() .

Общие примеры замены подстроки/символа в строке.

# замена обратных кавычек в строке >>> x = 'все вхождения подстроки `old` заменены на подстроку `new`' >>> x.replace('`', '-') # 'все вхождения подстроки -old- заменены на подстроку -new-' # замена обратных кавычек с ограничением в 2 замены >>> x = '2 вхождения подстроки `old` заменены на подстроку `new`' >>> x.replace('`', '~', 2) # '2 вхождения подстроки ~old~ заменены на подстроку `new`' # замена нескольких значений >>> x.replace('old', 'старая').replace('new', 'новая') # 'все вхождения подстроки `старая` заменены на подстроку `новая`' 

Замены нескольких значений в строке одной операцией.

Для замены нескольких разных символов/подстрок в одной операции (множественная замена) необходимо определить функцию, которая будет принимать исходную строку и список символов/подстрок, каждая со своим новым значением. Символы/подстроки с новыми значениями можно передавать разными способами, например как список двойных кортежей в виде [(‘old’, ‘new’), . ] или как словарь, где ключ будет старым значением, а значение — новым . В зависимости от того, в каком виде передаются значения, будет строится логика извлечения этих значений для осуществления замены в исходной строке.

В примере будем передавать символы/подстроки с их новыми значениями в виде кортежа, так как он дает больше гибкости. Гибкость будет состоять в том, что в примере будет возможность добавления количества замены каждого символа/подстроки в строке.

# примерная реализация функции множественной замены в строке # здесь еще нужно подумать над проверкой типов в кортежах . def replace(line, old_new_num): # при итерации по списку распаковываем кортежи на # старое и новое значения, а так же `n` - количество замен for vals in old_new_num: # если кортежа имеет 3 элемента, # значит присутствует количество замен if len(vals) == 3: # распаковываем кортеж old, new, n = vals # передаем аргументы методу и line = line.replace(old, new, n) elif len(vals) == 2: # распаковываем кортеж old, new = vals line = line.replace(old, new) else: # если в кортеже НЕ 2 или 3 элемента, # то поднимаем исключение raise 'кортеж должен состоять из 2-х или 3-х элементов' return line # сохраняем функцию в файл test.py и запускаем # $ python3 -i temp.py # исходная строка >>> line = 'абра-абра-кад-абра' # элементы кортежа означают: # ('заменяемое значение','новое значение', количество замен в строке) >>> replace_val = [('а', 'A', 3), ('б', 'Б'), ('кад', 'КАД')] >>> new_line = replace(line, replace_val) >>> new_line # 'AБрA-AБра-КАД-аБра' 

Из примера видим, что новая функция replace() работает как и ожидается, а именно символ ‘а’ заменился 3 раза, символ ‘б’ и подстрока ‘кад’ заменились по количеству совпадений.

  • ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
  • Метод str.capitalize(), первая буква в строке заглавная
  • Метод str.casefold(), сворачивает регистр строки
  • Метод str.center(), выравнивает строку по центру
  • Метод str.count(), считает совпадения в строке
  • Метод str.encode(), преобразует строку в байты
  • Метод str.endswith(), совпадение с концом строки
  • Метод str.expandtabs(), меняет табуляцию на пробел
  • Метод str.find(), индекс первого совпадения в строке
  • Метод str.format(), форматирует строку
  • Метод str.format_map()
  • Метод str.index(), индекс первого совпадения подстроки
  • Метод str.isalnum(), строка состоит из цифр и букв
  • Метод str.isalpha(), строка состоит только из букв
  • Метод str.isascii(), все символы в строке являются ASCII
  • Метод str.isdecimal(), проверяет строку на десятичное число
  • Метод str.isdigit(), строка состоит только из цифр
  • Метод str.isidentifier() проверяет строку на идентификатор Python
  • Метод str.islower( ), проверяет строку на нижний регистр
  • Метод str.isnumeric(), проверяет строку на числовые символы
  • Метод str.isprintable(), проверяет на доступность для печати
  • Метод str.isspace(), является ли строка пробелом
  • Метод str.istitle(), проверяет наличие заглавных букв в словах
  • Метод str.isupper(), проверяет строку на верхний регистр
  • Метод str.join(), объединяет список строк
  • Метод str.ljust(), ровняет строку по левому краю
  • Метод str.lower(), строку в нижний регистр
  • Метод str.lstrip(), обрезает символы в начале строки
  • Метод str.maketrans(), таблица символов для str.translate()
  • Метод str.partition(), делит строку по первому совпадению
  • Метод str.removeprefix(), удаляет префикс строки
  • Метод str.removesuffix(), удаляет суффикс строки
  • Метод str.replace(), меняет подстроку/символ в строке
  • Метод str.rfind(), индекс последнего совпадения подстроки
  • Метод str.rindex(), индекс последнего совпадения в строке
  • Метод str.rjust(), ровняет строку по правому краю
  • Метод str.rpartition(), делит строку по последнему совпадению
  • Метод str.rsplit(), делит строку справа
  • Метод str.rstrip(), обрезает символы на конце строки
  • Метод str.split(), делит строку по подстроке
  • Метод str.splitlines(), делит текст по символу ‘\n’
  • Метод str.startswith(), совпадение с началом строки
  • Метод str.strip(), обрежет строку с обоих концов
  • Метод str.swapcase(), сменит регистр символов в строке
  • Метод str.title(), каждое слово с заглавной буквы
  • Метод str.translate(), транслирование строки
  • Метод str.upper(), переведет строку в верхний регистр
  • Метод str.zfill(), дополнит строку нулями
  • Форматирование строк в стиле printf
  • F-string. Форматированные строки

Изменение строки в Python – метод replace

Строки — это важный тип данных, который есть почти в любом языке программирования. Он служит для создания, изменения и сохранения текстовой информации, а также используется при реализации некоторых задач, связанных с числами.

Python даёт программисту много инструментов для работы со строками, в том числе и метод replace() .

Что делает метод

Слово replace имеет дословный перевод «заменять», так что название метода точно описывает его назначение. С помощью replace можно заменить часть строки или её всю на другую строку.

Синтаксис метода выглядит так:

str.replace(old_str, new_str[, count])

В качестве аргументов в метод передаются:

  • old_str – часть исходной строки, которую необходимо заменить.
  • new_str – строка, на которую заменяют исходную строку ( old_str ).
  • count – определяет количество вхождений подстроки, которые необходимо заменить.

Здесь count – не обязательный параметр. Если его не указывать, то будут заменены все вхождения подстрок на новые.

В качестве str используется исходная строка (тип данных string).

Таким образом, метод replace позволяет гибко изменять только необходимые части строки str , работа метода продемонстрирована в следующих примерах:

my_str = "one dog, one cat, one rabbit" #Заменяем все вхождения "one" в строке a = my_str.replace("one", "two") print(a) # Выведет two dog, two cat, two rabbit #Заменяем первое вхождение "one" в строке b = my_str.replace("one", "two", 1) print(b) # Выведет two dog, one cat, one rabbit #Заменяем первые два вхождения "one" в строке c = my_str.replace("one", "two", 2) print(c) # Выведет two dog, two cat, one rabbit

Важно помнить, что строки — это неизменяемые последовательности. Поэтому метод replace не заменяет отдельные символы в целевой строке, вместо этого он создает её копию с нужными изменениями. Это важная особенность языка Python, которую должен знать каждый программист.

Это не очевидно, с помощью метода replace можно заменить сразу несколько значений, например все элементы списка:

str_list = ["кот", "собака", "кот собака", "кот кот"] # в новый список записываем элементы начального списка, измененные # с помощью replace result_list = [elem.replace("кот", "кошка", 1) for elem in str_list] print(result_list) # Выведет ['кошка', 'собака', 'кошка собака', 'кошка кот']

Применение replace для замены нескольких значений

С помощью словаря

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

# Функция для замены нескольких значений def multiple_replace(target_str, replace_values): # получаем заменяемое: подставляемое из словаря в цикле for i, j in replace_values.items(): # меняем все target_str на подставляемое target_str = target_str.replace(i, j) return target_str # создаем словарь со значениями и строку, которую будет изменять replace_values = my_str = "У меня есть кот и кошка" # изменяем и печатаем строку my_str = multiple_replace(my_str, replace_values) print(my_str)

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

У этого варианта программы есть один существенный недостаток, программист не может быть уверен в том, какой результат он получит. Дело в том, что словари — это последовательности без определенного порядка, поэтому рассматриваемый пример программы может привести к двум разным результатам в зависимости от того, как интерпретатор расположит элементы словаря:

  • У меня есть собака и собака
  • У меня есть кошка и собака

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

Для решения этой проблемы можно заменить обычный словарь на упорядоченный словарь OrderedDict , который нужно импортировать следующей командой:

from collections import OrderedDict

Помимо импорта в программе нужно поменять буквально одну строку:

replace_values =

Изменить её надо на:

replace_values = OrderedDict([("кот", "кошка"), ("кошка", "собака")])

В этом случае, результат будет «У меня есть собака и собака», если же поменять местами элементы упорядоченного словаря при инициализации следующим образом: OrderedDict([(«кошка», «собака»), («кот», «кошка»)]) , то результат будет «У меня есть кошка и собака».

Вариант со списками

Замену нескольких значений можно реализовать и по-другому, для этого используем списки:

my_str = "У меня есть кот и кошка" # в цикле передаем список (заменяемое, подставляемое) в метод replace for x, y in ("кот", "кошка"), ("кошка", "собака"): my_str = my_str.replace(x, y) print(my_str) # Выведет "У меня есть собака и собака"

В данном примере цикл for делает 2 итерации:

  1. Подставляет в метод replace значения из первого списка: replace(«кот», «кошка»), в результате чего получается строка «У меня есть кошка и кошка».
  2. Подставляет в метод replace значения из второго списка: replace(«кошка», «собака»), получается строка «У меня есть собака и собака».

Другие типы Python и метод replace

Метод replace есть не только у строк, с его помощью программист может изменять последовательности байт, время и дату.

Синтаксис метода для последовательности байт ничем не отличается от синтаксиса для строк, для дат и времени в аргументах метода replace нужно писать идентификатор изменяемой цели, например:

from datetime import date t_date = date(2020, 4, 23) t_date = t_date.replace(day = 11) print(t_date) # Выведет 2020-04-11

Для времени метод replace применяется аналогично.

Метод replace() в Python

Метод replace() возвращает копию строки, в которой все вхождения подстроки заменяются другой подстрокой.

str.replace(old, new [, count])

Параметры

Метод в Python может принимать максимум 3 параметра:

  • old ‒ старая подстрока, которую нужно заменить;
  • new ‒ новая подстрока, которая заменит старую подстроку;
  • count (необязательно) ‒ сколько раз вы хотите заменить старую подстроку новой.

Примечание: Если число не указано, метод заменяет все вхождения старой подстроки новой.

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

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

Если старая подстрока не найдена, возвращается копия исходной строки.

Пример 1: Использование команды

song = 'cold, cold heart' # replacing 'cold' with 'hurt' print(song.replace('cold', 'hurt')) song = 'Let it be, let it be, let it be, let it be' # replacing only two occurences of 'let' print(song.replace('let', "don't let", 2))
hurt, hurt heart Let it be, don't let it be, don't let it be, let it be

Дополнительные примеры

song = 'cold, cold heart' replaced_song = song.replace('o', 'e') # The original string is unchanged print('Original string:', song) print('Replaced string:', replaced_song) song = 'let it be, let it be, let it be' # maximum of 0 substring is replaced # returns copy of the original string print(song.replace('let', 'so', 0))
Original string: cold, cold heart Replaced string: celd, celd heart let it be, let it be, let it be

Как работает метод replace python?

Строковый метод str.replace(old, new[, count]) вернет копию строки, в которой все подстроки old будут заменены на new. Если указать необязательный параметр count, то не все old, а только указанное количество будет заменено.

'The Young Pope'.replace('Young', 'New') # 'The New Pope' 'One Hundred and One Dalmatians'.replace('One', '1', 1) # '1 Hundred and One Dalmatians' 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *