Вывод предыдущей строки
f = open('text.txt','r')
for line in f:
print(line)
Открываю файл таким образом, перебирая строки одна за одной как можно вывести текущую строку + прошлую строку что то типа:
print(line[i],line[i-1])
Ответы (3 шт):
Сделать это можно десятком разных способов. Ну, например, вот так:
a=[]
for line in f:
if fl==0:
fl=1
a.append(line)
else:
a.append(line)
print(a[0],a[1])
del a[0]
Вместо del a[0] можно использовать a.pop(0).
Можно несколько сократить код, избавившись от флажка:
a=[]
fl=0
for line in f:
a.append(line)
if len(a) !=1:
print(a)
a.pop(0)
else:
continue
Вместо построчного ввода файла можно затянуть все его содержимое и тогда выводите что угодно.
Еcть такой вариант:
prev = "\n"
with open('text.txt','r') as f:
for line in f:
print("previous: ", prev, "current: ", line)
prev = line
'''
previous:
current: my text
previous: my text
current: it's also
previous: it's also
current: it's too ...
previous: it's too ...
current: my tttext
'''
а еще вариант по примеру @Stanislav Volodarskiy, с итераторами:
from itertools import tee
def pairs(seq):
it = tee(seq)
next(it[1])
for item in zip(*it):
yield item
with open('text.txt','r') as f:
for prev,line in pairs(f):
print("previous: ", prev, "current: ", line)
# вывод такой же, только нет первой пары строчек
с учетом дополнений @Stanislav Volodarskiy получаем такую функцию:
from itertools import tee
def pairs(seq):
it = tee(seq)
next(it[1], None)
return zip(*it)
В стандартной библиотеке Питона нет способа вывести пары из последовательности значений. Я использую такую утилиту:
def pairs(seq):
it = iter(seq)
try:
prev = next(it)
except StopIteration:
return
for item in it:
yield prev, item
prev = item
Выглядит страшно, использовать просто:
@>>> print(*pairs([1, 2, 3, 4])) (1, 2) (2, 3) (3, 4)
С файлом её можно использовать так:
with open('text.txt','r') as f:
for line1, line2 in pairs(f):
print(line1, line2)