在不中断的情况下在Python中停止代码

时间:2014-11-22 02:17:01

标签: python loops

有没有办法在没有break函数的循环中停止Python中的代码?例如,如果我给出了一个看起来像的文本文件:

5 *
7 *
5 *
Limerick
8 A
8 A
5 B
5 B
8 A
Quintain (English)
0 A
0 B
0 A
0 B
0 B

如果不使用break函数到达包含所有字母的行(在本例中为Limerick),如何停止循环?

for line in file:
    list.append(line) until it reaches Limerick and ignore the rest of the file

基本上我想将前3行附加到列表中,然后在不使用break函数的情况下停止循环。

4 个答案:

答案 0 :(得分:0)

试试这个:

f = open('your_file')
my_list= []
for x in f:
    if x.strip() == 'Limerick':
        f.seek(0,2)
    else:my_list.append(x.strip())
print my_list

输出:

['5 *', '7 *', '5 *']

在上面的代码中,它会附加,直到它找到Limerick,f.seek(0,2)将让文件到达终点。

您也可以使用退货:

>>> my_list = []
>>> def limeric(f):
...     for x in f:
...         if x.strip() == 'Limerick':
...             return
...         my_list.append(x.strip())
... 
>>> f= open('your_file')
>>> limeric(f)
>>> my_list
['5 *', '7 *', '5 *']

答案 1 :(得分:0)

您可以使用变量来控制循环中的操作。

my_list = []
with open('test.txt', 'r') as f_i:
    flag = 1
    for line in f_i:
        if flag:
            if line.strip() != 'Limerick':
                my_list.append(line)
            else:
                flag = 0

print(my_list)

答案 2 :(得分:0)

您也可以在函数中执行此操作,只需从函数返回,而不是使用break。

答案 3 :(得分:0)

将它放在一个函数中,return将停止循环:

def lines_to_limerick_in(file_path):
    lines = []
    with open(file_path) as file:
        for line in file:
            lines.append(line)
            if 'Limerick' in line:
                return lines
        return lines

用法:

lines = lines_to_limerick_in(filepath)