0

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

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

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

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

我也不能使用withpython 的命令,因为这会给我像'with'这样的错误将成为 Python 2.6 中的保留关键字。我正在使用 Python 2.5

4

3 回答 3

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"
于 2013-07-26T21:17:28.930 回答
0

你可以使用这个:

fp = open("file")
for i, line in enumerate(fp):
    if i == 3:
        print line
    elif i == 9:
        print line
        break
fp.close()
于 2013-07-26T20:58:28.450 回答
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

它既高效又简单:)

于 2013-07-26T21:09:57.460 回答