I have a string like
a = "X1+X2*X3*X1"
b = {"X1":"XX0","X2":"XX1","X0":"XX2"}
I want to replace the substring 'X1,X2,X3' using dict b.
However, when I replace using the below code,
for x in b:
a = a.replace(x,b[x])
print(a)
'XXX2+XX1*X3'
Expected result is XX0 + XX1*X3*XX0
I know it is because the substring is replaced in a loop, but I don't know how to solve it.
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.
To replace all occurrences of a substring in a string by a new one, you can use the replace() or replaceAll() method: replace() : turn the substring into a regular expression and use the g flag. replaceAll() method is more straight forward.
Find and replace multiple values with nested SUBSTITUTE The easiest way to find and replace multiple entries in Excel is by using the SUBSTITUTE function. The formula's logic is very simple: you write a few individual functions to replace an old value with a new one.
You can create a pattern with '|'
then search in dictionary transform like below.
Try this:
import re
a = "X1+X2*X3*X1"
b = {"X1":"XX0","X2":"XX1","X0":"XX2"}
pattern = re.compile("|".join(b.keys()))
out = pattern.sub(lambda x: b[re.escape(x.group(0))], a)
Output:
>>> out
'XX0+XX1*X3*XX0'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With