通过python匹配和显示特定的行

时间:2013-07-26 20:55:07

标签: python python-2.5

我在日志文件中有15行,我想通过python读取第4行和第10行,并在输出中显示它们,说明找到了这个字符串:

abc
def
aaa
aaa
aasd
dsfsfs
dssfsd
sdfsds
sfdsf
ssddfs
sdsf
f
dsf
s
d

请通过代码建议如何在python中实现这一点。

只是为了详细说明这个例子的第一个(字符串或行是唯一的),并且可以在logfile中轻松找到,下一个字符串B在第一个字符串的40行内,但是这一个出现在日志文件的很多地方所以我需要在读取字符串A后读取前40行的字符串并打印相同的字符串才能找到这些字符串。

此外,我无法使用python的with命令,因为这会给我带来像'with'这样的错误,它将成为Python 2.6中的保留关键字。 我使用的是Python 2.5

3 个答案:

答案 0 :(得分:0)

您可以使用:

fp = open("file")
for i, line in enumerate(fp):
    if i == 3:
        print line
    elif i == 9:
        print line
        break
fp.close()

答案 1 :(得分:0)

#list of random characters
from random import randint
a = list(chr(randint(0,100)) for x in xrange(100))
#look for this
lookfor = 'b'
for element in xrange(100):
    if lookfor==a[element]:
        print a[element],'on',element
#b on 33
#b on 34

是一种易于阅读和简单的方法。您可以将日志文件的一部分作为示例吗?还有其他方法可以更好地运作:)。


经作者编辑后:

您可以做的最简单的事情是:

looking_for = 'findthis' i = 1 for line in open('filename.txt','r'):
    if looking_for == line:
        print i, line
    i+=1

它既高效又简单:)

答案 2 :(得分:0)

def bar(start,end,search_term):
    with open("foo.txt") as fil:
        if search_term in fil.readlines()[start,end]:
            print search_term + " has found" 


>>>bar(4, 10, "dsfsfs")
"dsfsfs has found"