Will McGugan wrote: > Hi, > > Is there a simple way of replacing a large number of substrings in a > string? I was hoping that str.replace could take a dictionary and use it > to replace the occurrences of the keys with the dict values, but that > doesnt seem to be the case.
You can look at the re.sub [1] and try: d={'a':'x', 'b':'y'} def repl(match): return d.get(match.group(0), '') print re.sub("(a|b)", repl, "a b c") > >>> dict_replace( "a b c", dict(a="x", b="y") ) > "x y c" Above, I gave the pattern myself but you can try to have it generated from the keys: def dict_replace(s, d): pattern = '(%s)'%'|'.join(d.keys()) def repl(match): return d.get(match.group(0), '') return re.sub(pattern, repl, s) On your example, I get: >>> dict_replace('a b c', {'a': 'x', 'b': 'y'}) 'x y c' >>> [1] http://python.org/doc/2.4.1/lib/node114.html -- http://mail.python.org/mailman/listinfo/python-list