Вывод предыдущей строки

f = open('text.txt','r')
for line in f:
 print(line)

Открываю файл таким образом, перебирая строки одна за одной как можно вывести текущую строку + прошлую строку что то типа:

print(line[i],line[i-1])

Ответы (3 шт):

Автор решения: passant

Сделать это можно десятком разных способов. Ну, например, вот так:

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

Вместо построчного ввода файла можно затянуть все его содержимое и тогда выводите что угодно.

→ Ссылка
Автор решения: TigerTV.ru

Е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)
→ Ссылка
Автор решения: Stanislav Volodarskiy

В стандартной библиотеке Питона нет способа вывести пары из последовательности значений. Я использую такую утилиту:

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)
→ Ссылка