Here is one simple solution :
>>> intext = """Lorem [ipsum] dolor sit amet, consectetur adipisicing elit,
sed do eiusmod tempor incididunt ut [labore] et [dolore] magna aliqua."""
>>> intext.replace('[', '{').replace(']',
'}')
'Lorem {ipsum} dolor sit amet, consectetur adipisicing elit, sed do eiusmod
tempor incididunt ut {labore} et {dolore} magna aliqua.'
*Some people, when confronted with a problem, think "I know, I’ll use
regular expressions." Now they have two problems.* — Jamie
Zawinski<ttp://jwz.livejournal.com>in comp.lang.emacs.
On Sun, Feb 7, 2010 at 11:15 AM, Schif Schaf <[email protected]> wrote:
> On Feb 7, 12:19 am, "Alf P. Steinbach" <[email protected]> wrote:
>
> >
> > I haven't used regexps in Python before, but what I did was (1) look in
> the
> > documentation,
>
> Hm. I checked in the repl, running `import re; help(re)` and the docs
> on the `sub()` method didn't say anything about using back-refs in the
> replacement string. Neat feature though.
>
> > (2) check that it worked.
> >
> > <code>
> > import re
> >
> > text = (
> > "Lorem [ipsum] dolor sit amet, consectetur",
> > "adipisicing elit, sed do eiusmod tempor",
> > "incididunt ut [labore] et [dolore] magna aliqua."
> > )
> >
> > withbracks = re.compile( r'\[(.+?)\]' )
> > for line in text:
> > print( re.sub( withbracks, r'{\1}', line) )
> > </code>
> >
>
> Seems like there's magic happening here. There's the `withbracks`
> regex that applies itself to `line`. But then when `re.sub()` does the
> replacement operation, it appears to consult the `withbracks` regex on
> the most recent match it just had.
>
> Thanks.
> --
> http://mail.python.org/mailman/listinfo/python-list
>
--
http://mail.python.org/mailman/listinfo/python-list