[BangPypers] chaining string operations..

Vishal vsapre80 at gmail.com
Mon Mar 28 09:09:51 CEST 2011

On Fri, Mar 25, 2011 at 5:45 PM, Vishal <vsapre80 at gmail.com> wrote:

> On Fri, Mar 25, 2011 at 3:31 PM, Senthil Kumaran <orsenthil at gmail.com>wrote:
>> On Fri, Mar 25, 2011 at 03:22:02PM +0530, Vishal wrote:
>> > I have a string that can be many megabytes worth memory size, and i
>> > want to
>> If you have got that string from a file like object, instead of
>> loading the entire string in memory you could iterate through the file
>> object to load one line at time. This will help provided the string is
>> has line-separators.
>> Otherwise you could store in a mock StringIO file like object and
>> iterate, if the string is heavy to handle in memory.
>> >
>> > Now I would like to chain these replacements into something like this:
>> >
>> > >>> s1 = s.replacements((' a', 'S'), (' \t', '\n'), ('C#', '\n')))
>> >
>> > Is there a known way of doing this currently in Python, apart from
>> producing
>> Here is one recipe to do multiple string replacement in python in a
>> single shot.
>> http://uthcode.sarovar.org/pycon2010/strings.html#making-multiple-replacements-in-a-string-in-a-single-pass
>> --
>> Senthil
>> _______________________________________________
>> BangPypers mailing list
>> BangPypers at python.org
>> http://mail.python.org/mailman/listinfo/bangpypers
> Thanks for his one. This is what I was looking for.
> --
> Thanks and best regards,
> Vishal Sapre


Just realized after using the above solution :

def multiple_replace(text, adict):
    rx = re.compile('|'.join(map(re.escape, adict)))

    def one_xlat(match):
        return adict[match.group(0)]

    return rx.sub(one_xlat, text)

that *this one is not* what I was looking for.

The use of '|' character in the regular expression, makes sure that the
sequence of replacements is not preserved, which is exactly what I want to

Is there another way to making (compiling) the regex such that match happens
as per a given sequence, and not as per occurrence of pattern in the given

Thanks and best regards,
Vishal Sapre

More information about the BangPypers mailing list