Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to replace multiple substrings of a string?

I would like to use the .replace function to replace multiple strings.

I currently have

string.replace("condition1", "") 

but would like to have something like

string.replace("condition1", "").replace("condition2", "text") 

although that does not feel like good syntax

what is the proper way to do this? kind of like how in grep/regex you can do \1 and \2 to replace fields to certain search strings

like image 778
CQM Avatar asked May 24 '11 21:05

CQM


People also ask

How do you replace multiple substrings in a string in Python?

Use the translate() method to replace multiple different characters. You can create the translation table specified in translate() by the str. maketrans() . Specify a dictionary whose key is the old character and whose value is the new string in the str.

How do you replace multiple values in a string?

var str = "I have a cat, a dog, and a goat."; str = str. replace(/goat/i, "cat"); // now str = "I have a cat, a dog, and a cat." str = str. replace(/dog/i, "goat"); // now str = "I have a cat, a goat, and a cat." str = str.


1 Answers

Here is a short example that should do the trick with regular expressions:

import re  rep = {"condition1": "", "condition2": "text"} # define desired replacements here  # use these three lines to do the replacement rep = dict((re.escape(k), v) for k, v in rep.iteritems())  #Python 3 renamed dict.iteritems to dict.items so use rep.items() for latest versions pattern = re.compile("|".join(rep.keys())) text = pattern.sub(lambda m: rep[re.escape(m.group(0))], text) 

For example:

>>> pattern.sub(lambda m: rep[re.escape(m.group(0))], "(condition1) and --condition2--") '() and --text--' 
like image 168
Andrew Clark Avatar answered Oct 07 '22 10:10

Andrew Clark