Python 3:查找行并跳过第一个匹配项

时间:2018-10-09 17:28:08

标签: python

我有一个很长的文件,必须在其中寻找特定的值。问题在于该文件有两行以相同的方式开始,但是我需要打印第二行。

文件类似于:

... random text
Total = 910 K. #Don't need it
... more random lines
Total = 1000 K #The one I need it

我正在使用:

for i,line in enumerate(lines):
    if line.find('Total =') != -1:
        Total = line.split()[4]
        break

但这只是给我第一场比赛。

我如何跳过拳头比赛而只使用第二个?

2 个答案:

答案 0 :(得分:3)

可能不是最好的解决方案,但是您可以使用一个标志来检查是否已经找到第一次出现的情况

is_second_occurance = False
for i,line in enumerate(lines):
    if line.find('Total =') != -1:
        if is_second_occurance:
            total = line.split()[4]
            break
        else:
            is_second_occurance = True

更好的解决方案可能是将其分解为一个返回生成器的函数

def get_total(lines):
    for line in lines:
        if line.startswith("Total = "):
            yield line.split()[4]

total = get_total(lines)
total = get_total(lines)

我认为这应该给您第二次出现

答案 1 :(得分:0)

或者可能是正则表达式

import re
string='''Total = 910 K. #Don't need it
... more random lines
Total = 1000 K #The one I need it'''
re.findall('(Total[\s\=\w]*K)',string)[1] #will find everything related to Total