Pętlę przechodzę przez plik i jeśli coś znajdę, chciałbym przeczytać przed sobą kilka linii, szukając czegoś, zanim wróci kontrola do głównej pętli. Jednak chcę zwrócić kontrolę w punkcie, w którym przestałem patrzeć w przyszłość.Jak odczytywać wcześniej plik podczas przechodzenia przez niego za pomocą Pythona?
Przykładowy kod:
for line in file:
line = line.strip()
llist = line.split()
if llist[0] == 'NUMS':
# some loop to read ahead and print nums on their own line
# until it finds END, then return control to the main for
# loop at the point where it stopped looking ahead.
Wejście próbki:
NUMS
1
2
3
4
5
END
SOME
MORE
STUFF
NUMS
6
7
8
9
0
END
Pożądany wyjściowa:
1 2 3 4 5
6 7 8 9 0
Jestem dość nowy w Pythonie, więc jeśli istnieje lepszy sposób to zrobić oprócz używania pętli do patrzenia w przyszłość, cieszę się, że to widzę.
Więc wewnętrzne 'dla linii w pliku:' zaczyna się od linii, gdzie zewnętrzna została wyłączona? Myślałem, że zacznie się od początku pliku. – astay13
@astay: To nie ma nic wspólnego z wewnętrzną/zewnętrzną. W tym kodzie jest dokładnie jeden iterator. 'dla rzeczy w' po prostu wykonuje pętlę wokół następnej rzeczy, aż iterator podniesie StopIteration. Możesz wyjść z pętli i rozpocząć kolejną pętlę, która będzie kontynuowała otrzymywanie następnej rzeczy. –
@John and Petr, Dzięki za pomoc w zrozumieniu plików/iteratorów lepiej! Wybieram to rozwiązanie, ponieważ mój kod wymagałby około 500 linii patrzenia w przyszłość. – astay13