there are a couple simple modification you can do, first of course is to know how to open a file to write, and that is simple passing the second optional argument "w"
The first and simple option is to save the desire result into a list and when you're done, write those results into a file
Example 1
import re
search_results = []
with open("data.txt") as file:
for line in file:
search_result = re.search(r"^(An act (?:.+?)\.)", line)
if search_result:
result = search_result.group(1)
print(result)
search_results.append(result)
with open("clean data.txt","w") as output_file:
for r in search_results:
output_file.write(r)
output_file.write("\n") # don't forget to put the new line, write doesn't do it for you
but what if we could print into a file? that way that way we wouldn't need to remember to put the new line, and the good thing is that we can, print can take a key-word only argument file
that is, well, the file where we want the print's output goes into
Example 2
import re
search_results = []
with open("data.txt") as file:
for line in file:
search_result = re.search(r"^(An act (?:.+?)\.)", line)
if search_result:
result = search_result.group(1)
print(result)
search_results.append(result)
with open("clean data.txt","w") as output_file:
for r in search_results:
print(r, file=output_file)
but if we do that, why not do it along the previous print? and the answer is: yes we can, granted that we are done processing that piece of data, we can put it into the result file directly (otherwise do it like the previous example)
Example 3
import re
with open("data.txt") as file, open("clean data.txt","w") as outfile:
for line in file:
search_result = re.search(r"^(An act (?:.+?)\.)", line)
if search_result:
result = search_result.group(1)
print(result)
print(result, file=outfile)
and this is the final form, the with
statement can take many a thing simultaneously and we use print
extra potential.
The next step would be to put that or part there off into a function, so it can be used for more that just those files more easily, but I leave that as an exercise for the reader.