我是python的新手,并且只有非常有限的编程技巧。我希望你能在这里帮助我。
我有一个大文本文件,我正在搜索特定的单词。带有这个单词的每一行都需要存储到另一个txt文件中。
我可以搜索文件并在控制台中打印结果,但不能打印到其他文件。我该如何管理?
f = open("/tmp/LostShots/LostShots.txt", "r")
searchlines = f.readlines()
f.close()
for i, line in enumerate(searchlines):
if "Lost" in line:
for l in searchlines[i:i+3]: print l,
print
f.close()
THX 扬
答案 0 :(得分:2)
使用with
上下文管理器,不要使用readlines(),因为它会将文件的全部内容读入列表。而是逐行迭代file object并查看是否存在特定单词;如果是 - 写入输出文件:
with open("/tmp/LostShots/LostShots.txt", "r") as input_file, \
open('results.txt', 'w') as output_file:
for line in input_file:
if "Lost" in line:
output_file.write(line)
请注意,对于python< 2.7,with
中不能有多个项目:
with open("/tmp/LostShots/LostShots.txt", "r") as input_file:
with open('results.txt', 'w') as output_file:
for line in input_file:
if "Lost" in line:
output_file.write(line)
答案 1 :(得分:1)
要正确匹配单词,您需要正则表达式;一个简单的word in line
检查也匹配我认为你不想要的blablaLostblabla
:
import re
with open("/tmp/LostShots/LostShots.txt", "r") as input_file, \
open('results.txt', 'w') as output_file:
output_file.writelines(line for line in input_file
if re.match(r'.*\bLost\b', line)
或者你可以使用更多罗嗦的
for line in input_file:
if re.match(r'.*\bLost\b', line)):
output_file.write(line)
作为旁注,您应该使用os.path.join
来制作路径;另外,要以跨平台方式处理临时文件,请参阅tempfile
模块中的函数。