DataSmash wrote: > Hello, > I need to search and replace 4 words in a text file. > Below is my attempt at it, but this code appends > a copy of the text file within itself 4 times. > Can someone help me out. > Thanks! > > # Search & Replace > file = open("text.txt", "r") > text = file.read() > file.close() > > file = open("text.txt", "w") > file.write(text.replace("Left_RefAddr", "FromLeft")) > file.write(text.replace("Left_NonRefAddr", "ToLeft")) > file.write(text.replace("Right_RefAddr", "FromRight")) > file.write(text.replace("Right_NonRefAddr", "ToRight")) > file.close() > >
Here's a perfect problem for a stream editor, like http://cheeseshop.python.org/pypi/SE/2.2%20beta. This is how it works: >>> replacement_definitions = ''' Left_RefAddr=FromLeft Left_NonRefAddr=ToLeft Right_RefAddr=FromRight Right_NonRefAddr=ToRight ''' >>> import SE >>> Replacements = SE.SE (replacement_definitions) >>> Replacements ('text.txt', 'new_text.txt') That's all! Or in place: >>> ALLOW_IN_PLACE = 3 >>> Replacements.set (file_handling_flag = ALLOW_IN_PLACE) >>> Replacements ('text.txt') This should solve your task. An SE object takes strings too, which is required for line-by-line processing and is very useful for development or verification: >>> print Replacements (replacement_definitions) # Use definitions as test data FromLeft=FromLeft ToLeft=ToLeft FromRight=FromRight ToRight=ToRight Checks out. All substitutions are made. Regards Frederic -- http://mail.python.org/mailman/listinfo/python-list