Python 在文件中循环时,文件操作从第一个开始再次开始

Python 在文件中循环时,文件操作从第一个开始再次开始,python,file-io,Python,File Io,我试图在文件中找到某个单词,并希望在满足条件时打印下一行 f = open('/path/to/file.txt','r') lines = f.readlines() for line in lines: if 'P/E' in line: n = lines.index(line) #get index of current line print(lines[n+1]) #print the next line a.close() 字符串“p

我试图在文件中找到某个单词,并希望在满足条件时打印下一行

f = open('/path/to/file.txt','r')
lines = f.readlines()
for line in lines:
    if 'P/E' in line:
        n = lines.index(line) #get index of current line
        print(lines[n+1])     #print the next line
a.close()
字符串“p/E”将在文件中出现4次,每次出现在不同的行中

执行时,代码通常在前两次出现“p/E”后打印下一行。然后它再次返回并再次打印相同的前两次出现并退出。循环在前两次出现后不继续;它会重复这个过程,然后退出

我检查了数据文件,看我的输出是否是实际结果,但“p/E”后面的所有行都不同

我如何解决这个问题?谢谢。

list.index()
只带一个参数,只会找到第一次出现的。您必须给它一个起点来查找超过上一个索引的元素,
list.index()
接受第二个参数,告诉它从何处开始搜索

但是,您不需要使用
lines.index()
;这是非常低效的;它需要对列表进行全面扫描,测试每一行,直到找到匹配项

只需在循环时使用添加索引:

小心,可能
索引+1
不是有效的索引;如果您在
列表的最后一行找到
'P/E'
,您将得到一个
索引器
。您可能需要添加一个
和索引+1
测试

请注意,使用
file.readlines()
一次性将所有文件读入内存。尽量避免这种情况;您可以直接在文件上循环,并记住前一行:

with open('/path/to/file.txt','r') as f:
    previous = ''
    for line in f:
        if 'P/E' in previous:
            print(line)  # print this line
        previous = line  # remember for the next iteration
只有一个参数的
list.index()
只查找第一次出现的。您必须给它一个起点来查找超过上一个索引的元素,
list.index()
接受第二个参数,告诉它从何处开始搜索

但是,您不需要使用
lines.index()
;这是非常低效的;它需要对列表进行全面扫描,测试每一行,直到找到匹配项

只需在循环时使用添加索引:

小心,可能
索引+1
不是有效的索引;如果您在
列表的最后一行找到
'P/E'
,您将得到一个
索引器
。您可能需要添加一个
和索引+1
测试

请注意,使用
file.readlines()
一次性将所有文件读入内存。尽量避免这种情况;您可以直接在文件上循环,并记住前一行:

with open('/path/to/file.txt','r') as f:
    previous = ''
    for line in f:
        if 'P/E' in previous:
            print(line)  # print this line
        previous = line  # remember for the next iteration