Replace string except inside quotes?
Jeff Shannon
jeff at ccvcorp.com
Fri Dec 3 18:41:08 EST 2004
Michael J. Fromberger wrote:
>It's not the most elegant solution in the world. This code does NOT
>deal with the problem of commented text. I think it will handle triple
>quotes, though I haven't tested it on that case.
>
>
I believe that it will probably work for triple quotes that begin and
end on the same line. Of course, the primary usage of triple-quotes is
for multiline strings, but given that the file is being examined one
line at a time, you'd need some method of maintaining state in order to
handle multiline strings properly. (Note that this problem is true
regardless of whether the strings are true triple-quoted multiline
strings, or single-quoted single-line strings broken across two lines of
source code using '\'.)
If the entire file is read in and processed as a single chunk, instead
of line-by-line, then *some* of the problems go away (at the cost of
potentially very large memory consumption and poor performance, if the
file is large). The fact that triple-quoted strings work out (mostly)
correctly when viewed as three pairs of quotes will help. But if a
triple-quoted string *contains* a normally quoted string (e.g., """My
"foo" object"""), then things break down again.
In order to handle this sort of nested structure with anything
resembling true reliability, it's necessary to step up to a true
lexing/parsing procedure, instead of mere string matching and regular
expressions.
Jeff Shannon
Technician/Programmer
Credit International
More information about the Python-list
mailing list