Python replace multiple values

How to replace multiple substrings of a string in Python?

In this article, we will learn to convert a list to a string in Python. We will use some built-in functions and some custom code as well. Let’s first have a quick look over what is list and string in Python.

Python String

The String is a type in python language just like integer, float, boolean, etc. Data surrounded by single quotes or double quotes are said to be a string. A string is also known as a sequence of characters.

string1 = "apple" string2 = "Preeti125" string3 = "12345" string4 = "Model number is 56@1"

Replace multiple Substrings in a String using replace()

The below example uses replace() function provided by Python Strings. It replaces all the occurrences of a sub-string to a new string by passing the old and new strings as parameters to the replace() function. Multiple calls to replace() function are required to replace multiple substrings in a string. There is also a third parameter that is optional in replace() which accepts an integer to set the maximum count of replacements to execute.

Example 1

str1 = "Fear leads to anger; anger leads to hatred; hatred leads to conflict" str2 = str1.replace("anger", "rage") str3 = str2.replace("to", "2") print(str3)

Fear leads 2 rage; rage leads 2 hatred; hatred leads 2 conflict

Читайте также:  Fully qualified name php

Example: Creates Dictionary of substrings to replace

The below examples create a dictionary of substrings as key-value pairs. Keys represent the sub-string and values are the new strings.

str1 = "Fear leads to anger; anger leads to hatred; hatred leads to conflict" char_to_replace = # Iterate over all key-value pairs in dictionary for key, value in char_to_replace.items(): # Replace key character with value character in string str1 = str1.replace(key, value) print(str1)

Fear leads 2 rage, rage leads 2 hatred, hatred leads 2 conflict

Example

This method uses two functions — translate() and maketrans() .

maketrans() — It a mapping table between the original string and its replacement. It is a method of str. It takes two parameters — an old string and a new string.

translate() — It generates the translated string retuned by maketrans() function.

import string str1 = "Fear leads to anger; anger leads to hatred; hatred leads to conflict" res = str1.translate(str.maketrans("o", "0")) print(res)

Fear leads t0 anger; anger leads t0 hatred; hatred leads t0 c0nflict

Example: Replace using Regex module

This method uses regex Python’s module. Regex provides multiple string operations based on expressions. We will use two functions of the regex module- re.sub() and re.subn() to replace multiple substrings in a string.

sub() — It replaces the contents of a string based on patterns. It takes a pattern or a string as the first argument. The second argument is the lambda function which extracts the matched sub-string then returns the value associated with it from the dictionary. It takes the original string as the third argument.

subn() — It is similar to the above function but it returns a tuple of the converted string and the number of replacements made. It is useful if you want to note how many pattern groups you manipulated as metrics or for further processing.

Example 1 Use re.sub()

When re.sub() matches pattern from the string, it calls the lambda function, which gives the replacement character, then the sub() function replaces that character in the string.

import re str1 = "Fear leads to anger; anger leads to hatred; hatred leads to conflict" str1 = re.sub("leads", lambda x: 'x', str1) print(str1)

Fear x to anger; anger x to hatred; hatred x to conflict

Example : Use re.subn()

import re str1 = "Hi, my number is 08999XX. I am 23 years old. I live in 221B Baker Street." str1, n = re.subn('6', 'X',str1) print(str1)

Hi, my number is XXXXXXX. I am XX years old. I live in XXXB Baker Street.

Conclusion

In this article, we learned to replace multiple substrings in a string by using several built-in functions such as re.sub() , re.subn() , str.replace() , str.maketrans() , translate() etc and we used some custom code as well.

Источник

Replace Python

Основы

Введение в тему

В этом уроке мы рассмотрим как заменить подстроку внутри строки, используя метод replace().

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

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

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

Синтаксис

Метод .replace() имеет следующий синтаксис:

Параметры

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

str — Строка, к которой применяется метод (тип данных string).

old — Подстрока, которую необходимо найти и заменить (тип данных string).

new — Новая подстрока, которой будет заменена старая (тип данных string).

count— Необязательный аргумент. Количество совпадений старой подстроки, которую необходимо заменить (тип данных int). Если этот параметр не указать, то будут заменены все вхождения подстрок на новые.

Вот несколько примеров применения метода:

my_var = "Ivan, Rinat, Olga, Kira" #Заменяем все подстроки "Olga" в строке a = my_var.replace("Olga", "Olya") print(a) #Заменяем первую подстроку "i" в строке b = my_var.replace("i", "I", 1) print(b) #Заменяем первые две подстроки "a" в строке c = my_var.replace("a", "A", 2) print(c) # Вывод: Ivan, Rinat, Olya, Kira Ivan, RInat, Olga, Kira IvAn, RinAt, Olga, Kira

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

Метод возвращает копию строки, в которой старая подстрока заменяется новой подстрокой. Строка, к которой применяется метод остаётся неизменной. Если искомая подстрока не обнаружена, то возвращается копия исходной строки.

my_var = "Ivan, Rinat, Olga, Kira" #Заменяем все вхождения "Olga" в строке a = my_var.replace("Roman", "Roma") print(a) # Вывод: Ivan, Rinat, Olga, Kira

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

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

my_var = ['Ivan', 'Rinat', 'Olga', 'Kira'] # в новый список записываем элементы начального списка, измененные # с помощью replace new_list = [_.replace("i", "A", 1) for _ in my_var] print(new_list) # Вывод: ['Ivan', 'RAnat', 'Olga', 'KAra']

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

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

# Функция для замены нескольких значений 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 = "Ivan, Rinat, Olga, Kira" # изменяем и печатаем строку my_str = multiple_replace(my_str, replace_values) print(my_str) # Вывод: IvAn, RInAt, OlgA, KIrA

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

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

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

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

Источник

Оцените статью