递归获取行数

时间:2015-11-18 19:10:29

标签: python python-2.7

有一个名为1.feature的文件:

background

Scenario:1
Scenario:2
Scenario:3
Scenario:4
aasdf;
ad;das
dasd;asd
ad'asd
tekst
asdsadsa
Scenario
tekst
tekst
tekst
asdasd

我想获得最后一个场景'的行号。之后出现' text'文本。 在这个特定的例子中,它将是:第6行和第13行。

现在我有这样的代码:

with open('1.feature', 'r') as feat:
    tabula = feat.readlines()
    for element in tabula:
        if 'tekst' in element:
            current_index = tabula.index(element)
for element in tabula:
    if 'Scenario' in element and current_index > tabula.index(element):
        scenario_begining = '1.feature:' + str(tabula.index(element) + 1)
print scenario_begining

预期产出:

1.feature:6
1.feature:13

当前输出:

1.feature:6

我认为问题出在current_index变量上。

也许有更简单的方法来获得这样的输出? 此致

1 个答案:

答案 0 :(得分:0)

根据要求,当一个"场景"被击中,该场景的位置被存储。如果找到所需文本且尚未打印场景,则会打印场景:

text = 'tekst'

with open('1.feature', 'r') as feat:
    tabula = feat.readlines()

current_scenario = -1
for i in range(len(tabula)):
    if 'Scenario' in tabula[i]:
        current_scenario = i+1
    elif tabula[i].strip('\n') == text and current_scenario != -1:
        print '1.feature:', current_scenario
        current_scenario = -1

结果是:

1.feature:6
1.feature:13