> I am trying to read a file > This file has a line containing string 'disable = yes' > > I want to change this line to 'disable = no'
Sounds like sed -i 's/disable *= *yes/disable = no/' file.txt would do what you want. It doesn't catch word boundaries, so if you have something like "foodisable = yes", it will replace this too. Additionally, it only expects spaces around the equal-sign, so if you have tabs, you'd have to modify accordingly. If it must be done in python, import re r = re.compile(r"(\bdisable\s*=\s*)yes\b") outfile = file('out.txt', 'w') for line in file('in.txt'): outfile.write(r.sub(r'\1no', line)) Add the re.IGNORECASE option if so desired. This doesn't have the cautions listed above for the sed version. Wreckless code! > The concern here is that , i plan to take into account the white spaces > also. I'm not sure what you intend by this. Do you want to disregard whitespace? Do you want to keep leading indentation? The above python should *just* replace "yes" with "no" in the above context, not touching space or anything of the like. -tkc -- http://mail.python.org/mailman/listinfo/python-list