using re module to find
antonxx at gmx.de
Fri Jun 13 10:23:41 CEST 2008
John Machin <sjmachin <at> lexicon.net> writes:
> On Jun 12, 7:11 pm, anton <anto... at gmx.de> wrote:
> > Hi,
> > I want to replace all occourences of " by \" in a string.
> > But I want to leave all occourences of \" as they are.
> > The following should happen:
> > this I want " while I dont want this \"
... cut text off
> What you want is:
> >> import re
> >> text = r'frob this " avoid this \", OK?'
> >>> text
> 'frob this " avoid this \\", OK?'
> >> re.sub(r'(?<!\\)"', r'\"', text)
> frob this \\" avoid this \\", OK?'
First.. thanks John.
The whole problem is discussed in
in the section "The Backslash Plague"
Unfortunately this is *NOT* mentioned in the standard
python documentation of the re module.
Another thing which will always remain strange to me, is that
even if in the python doc of raw string:
"Specifically, a raw string cannot end in a single backslash"
s=r"\\" # works fine
s=r"\" # works not (as stated)
But both ENDS IN A SINGLE BACKSLASH !
The main thing which is hard to understand is:
If a raw string is a string which ignores backslashes,
then it should ignore them in all circumstances,
or where could be the problem here (python parser somewhere??).
More information about the Python-list