Wpis z mikrobloga

Mireczki, denerwuje mnie jeden algorytm niby banalny a jednak niezupelnie. Zamiencie mi prosze tekst w pliku miedzy delimeterami a i b. Banal nie? Otoz nie tym razem. By bylo prosto
import re; re.match (d1+"(.*)"+d2, fp, re.S)
NIE zmaczuje poprawnie gdy ogranicznikow jest kilka a interesuje nas pierwszy, skoro algo jest zachlanny. A musi byc bo tekst miedzy d1 i d2 to zagadka
No to moze prosciej?
f=fp.read ()
X=f.index (d1)
Y=f.rindex (d2)
No ale ze ogranicznikow jest kilka...to moze
While (X <Y):
.. X = f.index(d1, X+1)
.. Y = f.index (d2, Y+1)
  • 6
  • Odpowiedz
  • 0
Brzmi sensownie? Stary index X jest zachowywany by przywrocic go po przekroczeniu whila. Niemniej qrestwo nie dziala, a konkretnie majac tekst

Sjxjx
Zupa
Dmxkc
Dupadupa
Zupa*\*
Dupadjupppa
Duppa
Dup
Debowa\*
Dupplaa
Joblaa
Zupppa
Dupa
Zupa
Glsnxjd
Debowa
Duppa
Xjdns
  • Odpowiedz
  • 0
I gdy interesuje mnie tekst miedzy zupa i debowa drugi rindex nie jest w stanie przeskoczyc mi do pierwszego bloku zamykajacego, nie znajduje po prostu tekstu. Moze jest pozno ale no bez przesady. Czyli pierwszy przebieg znajduje wlasciwa zupe z gwiazdka, natomiast d2 znajduje sie duzo za daleko (ostatni match a nie nastepny po d1. Sytuacje komplikuje fakt ze d1 jest mega nieunikalne. d2 jest w miare unikalne i mam jeszcze d1.5
  • Odpowiedz