any better way to do it?

Niels Diepeveen niels at endea.demon.nl
Thu Mar 9 09:40:03 EST 2000


Benyang Tang schreef:
> 
> Here I am doing some replacement in a file. It may just take one line in sed. I am wondering whether there is a shorter way in python to do it. Thanks for any suggestion.

For one thing, it's easier to read the whole file into a single string:

#-----------
lines = open('data').read()

lines = re.sub(r'^\s*nStateStart\s*=\s*(\d+)', '123', lines)
lines = re.sub(r'^\s*nStateStop\s*=\s*(\d+)', '223', lines)

open('data', 'w').write(lines)
#-----------

You can do this in one line, if you like. Note that there is a slight
difference in semantics, because '\s' also matches a newline, but that
is easy to fix, if you want to. BTW, is this really the substitution you
want, or something like
lines = re.sub(r'^(\s*nStateStart\s*=\s*)\d+', '\g<1>123', lines)

-- 
Niels Diepeveen
Endea automatisering





More information about the Python-list mailing list