Jeżeli wyraz w pierwszej linii powtarza się w kolejnej.

0

Dzień dobry to mój pierwszy post i pierwszy program.

Program sprawdza czy istnieje plik z danymi, zaczytuje plik .lst w którym są daty, godziny, loginy.
Plik zawiera dane od 2003 roku.
Program oczekuje na podanie z klawiatury szukanego roku i miesiąca, wyszukuje wszystkie zdarzenia np. z luty 2021.
Problem pojawia się gdy jeden login występuje klika razy:

2021.02.18 0939 1 XXX YYY
2021.02.18 0945 2 XXX YYY
2021.02.18 0914 2 XXX YYY
2021.02.19 0524 1 ZZZ WWW
2021.02.19 0518 2 ZZZ WWW
2021.02.19 0509 2 ZZZ WWW

Aktualnie wyświetla się cała lista nie zależnie ile razy dany logi występuje.
Potrzebuje wyświetlić że login XXX YYY występuje ale tylko raz. Najlepiej ten pierwszy raz np. 2021.02.18 0939 ale razem z datą i godziną. Posortowana lista wyglądałaby tak:
:
2021.02.18 0939 1 XXX YYY
2021.02.19 0524 1 ZZZ WWW

Poniżej fragment który szuka w pliku dane, wyrażenia zawartego w pliku szukane (Np. 2021.02) i zapisuje do pliku zapis.

szukane = "1.txt"
dane = "1.lst"
zapis = '2.txt'

keys = [key for key in (line.strip() for line in open(szukane)) if key]
with open(dane, encoding="utf8") as f:
for line in f:
for key in keys:
if key in line:
print(line, end='')
zapis = open('2.txt', 'a')
zapis.write(line + '\n')
break

To właśnie te dane zawarte w pliku zapis = '2.txt' chciałbym wyświetlić ponownie ale już posortowane.

0

Zamiast tego twojego print i wpisywania do pliku zbieraj wyniki w jakiejś liście i posortuj i dopiero po tych pętlach zrób coś z listą wyników. Albo jeśli koniecznie chcesz mieć tylko 1 element, to zwyczajnie przerwij skrypt po znalezieniu pierwszego wyniku.

0

Polecam tutorial do obsługi plików:

1 użytkowników online, w tym zalogowanych: 0, gości: 1