我正在处理一个项目,该项目需要导入一个文本文件、清理数据并写入一个新的文本文件。我需要你帮我完成最后一步。我的Python程序是这样的:
import re
with open("data.txt") as file:
for line in file:
search_result = re.search(r"^(An act (?:.+?).)", line)
if search_result:
print(search_result.group(1))
这将成功地根据需要清理文本并打印出来。如何将其修改为写入.txt文件?谢谢你!
你可以做一些简单的修改,首先当然是知道如何打开一个文件来写,这很简单,传递第二个可选参数"w">
第一个简单的选项是将期望的结果保存到一个列表中,当您完成后,将这些结果写入文件
示例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
但是如果我们可以打印到一个文件中呢?这样我们就不需要记着加新行了,好处是我们可以,print可以只接受一个关键字参数file
也就是说,我们想要打印输出的文件进入 示例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)
但是如果我们这样做,为什么不沿着前面的打印进行呢?答案是:是的,我们可以,假设我们已经完成了对数据块的处理,我们可以直接将其放入结果文件(否则就像前面的例子一样)
示例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)
,这是最终形式,with
语句可以同时取多个东西,我们使用print
额外的势。
下一步是把这个或部分放到一个函数中,这样它可以更容易地用于更多的文件,但我把它留给读者作为练习。
将搜索结果附加到列表中,打开一个新的文本文件,并在写入文件之前将列表传递给它,如下所示…
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:
search_results.append(search_result.group(1))
with open('newfile.txt', mode='wt', encoding='utf-8') as myfile:
myfile.write('n'.join(search_results))
我会将结果添加到一个字符串中,用新的行字符分隔行,而不仅仅是打印。
然后我将以类似于上面所做的方式打开一个新的文本文件,但这次要写。(提示:open()函数还有其他可选参数)
要在python中编辑fine,您必须首先使用:
with open("file.txt", "w") as f:
重要参数是"w"表示模式:写
然后编辑它,你可以这样做:
f.write("test")