String replacement in Python is not difficult, but I want to do something special:
teststr = 'test test test test'
animals = ['bird','monkey','dog','fox']
#replace 'test' with random item from animals
finalstr = ['dog fox dog monkey']
I write a very inefficient version:
from random import choice
import string
import re
teststr = 'test test test test'
animals = ['bird','monkey','dog','fox']
indexes = [m.start() for m in re.finditer('test', 'test test test test')]
#indexes = [0, 5, 10, 15]
for i in indexes:
string.replace(teststr, 'test', choice(animals), 1)
#Final result is four random animals
#maybe ['dog fox dog monkey']
It works, but I believe there is some simple method with REGULAR EXPRESSION which I am not familiar with.
Use a re.sub callback:
import re
import random
animals = ['bird','monkey','dog','fox']
def callback(matchobj):
return random.choice(animals)
teststr = 'test test test test'
ret = re.sub(r'test', callback, teststr)
print(ret)
yields (for example)
bird bird dog monkey
The second argument to re.sub
can be a string or a function (i.e. a callback). If it is a function, it is called for every non-overlapping occurrance of the regex pattern, and its return value is substituted in place of the matched string.
You can use re.sub
:
>>> from random import choice
>>> import re
>>> teststr = 'test test test test'
>>> animals = ['bird','monkey','dog','fox']
>>> re.sub('test', lambda m: choice(animals), teststr)
'fox monkey bird dog'
>>> re.sub('test', lambda m: choice(animals), teststr)
'fox dog dog bird'
>>> re.sub('test', lambda m: choice(animals), teststr)
'monkey bird monkey monkey'
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