On Mon, 18 Jan 2010 11:15:37 +0100, superpollo wrote: > hi. > > what is the most pythonic way to substitute substrings? > > eg: i want to apply: > > foo --> bar > baz --> quux > quuux --> foo > > so that: > > fooxxxbazyyyquuux --> barxxxquuxyyyfoo
For simple cases, just use replace: >>> s = 'fooxxxbazyyyquuux' >>> s = s.replace('foo', 'bar') >>> s = s.replace('baz', 'quux') >>> s = s.replace('quuux', 'foo') >>> s == 'barxxxquuxyyyfoo' True In complicated cases, such as if there are conflicts or overlaps between strings, you may need to use a regular expression, or even parse the string yourself. The problem is that "substitute multiple strings" is not well defined, because in general it depends on the order you perform them. You can define a function to do the replacements in one order, but for another use you might need a different order. E.g.: replacing "a" -> "X" and "aa" -> "Y", if you have the string "aaa" what result do you expect? You could get "XXX", "XY" or "YX". None of these are wrong, it depends on which you prefer. -- Steven -- http://mail.python.org/mailman/listinfo/python-list