Wpis z mikrobloga

#programowanie #programista15k #python

Jak zaprogramować w Pythonie cofanie się w liniach pliku po znalezieniu słowa. Przykładowy plik:
Line 1: Kamil
Line 2: Magda
Line 3: Jerzy
Line 4: Edek
Line 5: Alek
Line 6: Łukasz

Jeżeli znajdzie napis Alek to niech wróci do lini 2 i szuka słowa Edek.
Da radę cos takiego zrobić?
  • 9
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@V0lc4n0: mając otwarty plik możesz wrócić do początku używając file.seek(0, 0), jak chcesz skoczyć do konkretnej linii to już musisz jakoś sobie cachować długość linii wczytując plik, jeśli masz mały plik to nic nie stoi na przeszkodzie żeby przez cały przelecieć zanim zaczniesz coś z nim robić, tu masz kilka przykładów jak to można ogarnąć https://stackoverflow.com/questions/620367/how-to-jump-to-a-particular-line-in-a-huge-text-file
  • Odpowiedz
@V0lc4n0: Da radę wszystko tylko pytanie jak bardzo skomplikowanie i wydajnie to musisz zrobić.
Najprościej to wczytać cały plik jako linijki do listy przy użyciu .readlines() i chodzić po liście przy użyciu indexu.
  • Odpowiedz
@V0lc4n0: Dobre rozpisanie problemu i zadanie odpowiedniego pytania to też część pracy programisty. ( ͡° ͜ʖ ͡°)
Da radę. (zapewne na kilka sposobów w różnych językach programowania, a jeszcze pewniejsze jest to, że nie napisałeś nam wszystkiego i da się to jeszcze inaczej zrobić).
  • Odpowiedz
@V0lc4n0: a jaka stoi za tym logika ze po znalezieniu slowa Alek (bo zakladam ze jego szukamy) w linii 5 mam wrocic wlasnie do linii 2 (a nie np. 3 albo 1) i szukac slowa Edek (a nie np. Lukasz)
  • Odpowiedz
@V0lc4n0: tak jak pisal @lionbest: pytanie jak duzy jest plik,jaka stoi logika za "cofaniem sie", do czego to ma sluzyc, jak czesto ma byc to uruchamiane - inaczej trzeba podejsc do problemu jak jest to np. okresowy import przez admina a inaczej jak masz rownolegle odpalanie tego przez tysiace userow ;) bo moze sie okazac ze skanowanie od poczatku bedzie wystarczajacym pomyslem, a moze parsowanie pliku i wrzucenie
  • Odpowiedz
@V0lc4n0: no to podałem ci link do stackoverflow gdzie ktoś zadał identyczne pytanie i uzyskał 5+ odpowiedzi z gotowym kodem po prostu wybierz któreś i zaimplementuj u siebie
  • Odpowiedz