Jestem nowy w Pythonie i szukam pomocy. Mam duży plik tekstowy, który chcę wyszukać i policzyć ilość razy, jak linia jest identyczna z tym powyżej. Oto, co mam do tej pory.

f = open('test.txt')

counter = 0

for line in f:
    nextline = f.next()

    if line == nextline:
        counter = counter + 1
print counter
f.close()

Te grupy i porównuje pierwszą i drugą linię, a następnie trzeci i czwarty i tak dalej. Jak mogę dostosować program do porównania pierwszej linii z drugim, a następnie drugi z trzecią, trzecim z czwartą itp. Każda pomoc byłaby doceniana. Dzięki.

0
elbruzo 24 czerwiec 2017, 16:50

4 odpowiedzi

Najlepsza odpowiedź

Zachowaj odniesienie do poprzedniej linii takiej:

f = open('test.txt') 

counter = 0 
prevLine = None

for line in f: 
    if line == prevLine: 
        counter = counter + 1
    prevLine = line 

print counter 
f.close()
2
Aenadon 24 czerwiec 2017, 14:05

Możesz spróbować tego:

f = open('filename.txt').read().splitlines()

print len([f[i] for i in range(len(f)-1) if f[i] == f[i+1]])
0
Ajax1234 24 czerwiec 2017, 14:13

Myślę, że powinno być jedno dziwne rozwiązanie ... a tu jesteś

from functools import reduce #if you are useing Python 3+

count = 0
def compare_string(prev, new):
    global count
    if prev == new:
        count += 1
    return new

with open('test.txt') as f:
    reduce(compare_sring, f)
0
vZ10 24 czerwiec 2017, 14:07

Dzwoniąc do f.next() już przejdziesz do następnej linii. Możesz jednak użyć zmiennej old_line, która przechowuje poprzednią linię. Za każdym razem na końcu pętli ustawiasz old_line, aby odnieść się do line. Ponadto ustawiasz old_line początkowo do None, aby zapewnić, że pierwsza linia nie zostanie zliczona.

counter = 0
with open('test.txt') as f:
    old_line = None
    for line in f:
        if line == old_line:
            counter += 1
        old_line = line
print counter
0
Willem Van Onsem 24 czerwiec 2017, 13:55