在Python中搜索文本文件并打印相关行?

2024-04-26 06:24:46 发布

您现在位置:Python中文网/ 问答频道 /正文


Tags: python
3条回答
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,中的逗号防止在输出中出现额外的空格;后面的print语句将不同行的结果分隔开。

或者更好(从马克·勒索那里偷回来):

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

注意“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

编辑:也许没必要。我只是测试了一些例子。如果y超出范围,x[y]将给出错误,但是x[y:z]似乎没有给出y和z的超出范围值的错误

with open('file.txt', 'r') as searchfile:
    for line in searchfile:
        if 'searchphrase' in line:
            print line

向我公然抄袭的senderle道歉。

相关问题 更多 >