有没有办法在没有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函数的情况下停止循环。
答案 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)