[Tutor PyCZ] Regularni vyrazy
geon
geon na post.cz
Středa Září 21 13:50:49 CEST 2005
Sladecek Lukas napsal(a):
>Zdravim,
>
>v pythonu jsem novacek a momentalne resim problem jak dosadit za text
>ktery najdu (pomoci regularniho vyrazu) jakykoliv svuj vlastni text.
>Cili mam nejakej log ve kterm si najdu urcita klicova slova za ktera pak
>pridam napr. text "pokus" a tak pokracuji az do konce logu...
>
>
>import sys
>import os
>import re
>
>
>bin = "/sbin/ifconfig"
>iface = str(raw_input("\nZadejte interface: "))
>
>shell = bin+" "+iface
>opensh = os.popen(shell)
>for lineout in opensh.readlines():
> mode = re.match('\w+\s+Link\s+encap:(?P<MODE>\w+)\s+HWaddr', lineout)
> print mode.group('MODE')
>
>
>Tohle je jen priklad jak hledam klicove slovo (neni to navazane na zadne
>logy). Potreboval bych jen nasmerovat jak spavne zapsat do logu presne
>na to urcite misto a pokracovat dale (dokud je za co dopisovat)...
>
>
Nevím jestli jsem zcela pochopil, napíši tedy čistě teoreticky, jak bych
to řešil já:
1/ načíst soubor do jedné textové proměnné a pak
* pomocí reg. výrazů - funkce "nový log"=sub( pattern, repl, string[,
count]) )
* nebo pomocí pozice= "log".find("něco") a pak "nový log" =
log[0:pozice] + "nový text" + log[pozice:-1].
* přídadně kombinací obou, kdy reg. výraz bude vracet pozici prvního
písmene z hledaného výrazu a pomocí druhého postupu to zaměníš ....
2/ řetězce jsou v Pythonu neměnné, takže se nedá měnit na místě. Už jsem
o tom taky přemýšlel, jak to udělat - snad jedině si vytvořit svojí
vlastní třídu, a tam si to nadefinovat. Nebo sehnat nějaký modul, který
ale bude asi řešit podobně...
Nevím jestli to je ono a jestli to stačí.... ;-)
--
geon
Vyjímka je pravidlo. Rekurzivní.
Další informace o konferenci Tutor