用Python搜索文本文件并打印相关行?
我该怎么在一个文本文件里查找一个关键词或者短语,然后打印出包含这个关键词或短语的那一行呢?
3 个回答
2
注意到使用 "i+3" 可能会出现索引超出范围的问题。你可以尝试这样的写法:
with open("file.txt", "r") as f:
searchlines = f.readlines()
j=len(searchlines)-1
for i, line in enumerate(searchlines):
if "searchphrase" in line:
k=min(i+3,j)
for l in searchlines[i:k]: print l,
print
补充说明:也许这并不是必要的。我刚刚测试了一些例子。对于 x[y] 来说,如果 y 超出了范围,会报错,但对于 x[y:z] 来说,y 和 z 超出范围似乎不会报错。
23
with open('file.txt', 'r') as searchfile:
for line in searchfile:
if 'searchphrase' in line:
print line
首先要向senderle道个歉,因为我直接抄了他的内容。
72
searchfile = open("file.txt", "r")
for line in searchfile:
if "searchphrase" in line: print line
searchfile.close()
要简单地打印出多行内容
f = open("file.txt", "r")
searchlines = f.readlines()
f.close()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print
在 print l,
中的逗号可以防止输出中出现多余的空格;后面的打印语句则用来区分不同的行结果。
或者更好一点(借用Mark Ransom的说法):
with open("file.txt", "r") as f:
searchlines = f.readlines()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print