Iterative find/replace from a list of tuples in Python
Question: I have a list of tuples, each containing a find/replace value that I would
like to apply to a string. What would be the most efficient way to do so? I
will be applying this iteratively, so performance is my biggest concern.

More concretely, what would the innards of processThis() look like?

    
    
    x = 'find1, find2, find3'
    y = [('find1', 'replace1'), ('find2', 'replace2'), ('find3', 'replace3')]
    
    def processThis(str,lst):
         # Do something here
         return something
    
    >>> processThis(x,y)
    'replace1, replace2, replace3'
    

Thanks, all!


Answer: You could consider using `re.sub`:

    
    
    import re
    REPLACEMENTS = dict([('find1', 'replace1'),
                         ('find2', 'replace2'),
                         ('find3', 'replace3')])
    
    def replacer(m):
        return REPLACEMENTS[m.group(0)]
    
    x = 'find1, find2, find3'
    r = re.compile('|'.join(REPLACEMENTS.keys()))
    print r.sub(replacer, x)
    

