[python] parsovanie tagov

Jan Jakubuv jakubuv na gmail.com
Pondělí Únor 11 12:47:56 CET 2008


dobry den,

nevim jestli je to Vas zamer, ale v
   reg = re.compile(r"href=(?P<url>[.a-z]+)\.html")
chybi uvozovky kolem argumentu. s uvozovkami by vyraz vypadal takto:
    reg = re.compile(r'href="(?P<url>[.a-z]+)\.html"').

Podle toho, co Vam program hlasi ale bude chyba asi jinde..

1) v cmdReg = re.compile(r"<pre>(?P<prikaz> .*)</pre>") mate navic mezeru
    za <prikaz>, cili napiste "<prikaz>.*" namisto "<prikaz> .*"

2) pokud ma text mezi tagy "pre" vice radek, tak je je potreba zapnout
priznak DOTALL pri kompilaci vyrazu. Jinak totiz "." neobsahuje konec
radku, cili znak "\n" (ci obdobne dle systemu). Pokud uvedete priznak
DOTALL tak potom teprve "." znamena jakykoliv znak.

celkove bych napsal:
  cmdReg = re.compile(r"<pre>(?P<prikaz>.*)</pre>", re.DOTALL)

Nakonec mala rada. Pokud pisete program co obsahuje regularni vyrazy,
vyzkousejte si je nejpreve nekde nanecisto, na Vami pripravenem
vstupu, napr.:

>>> reg.search('<a href="ahoj.html">')

>>> cmdReg.search("""aaa\n<pre>bb\nbb</pre>\nccc""")

>>> cmdReg.search("""aaa\n<pre>bbb</pre>\nccc""")

honza.


2008/2/11, Tomy novella <tomasnovella na gmail.com>:
> preklep ;) ale aj tak to nefunguje ;(
> posielam moj doterajsi skript:
> -----
> #!/usr/bin/python
>
> import urllib,re,os
>
> wwwroot = 'http://minnie.tuhs.org/UnixTree/V7/usr/src/cmd/'
> def downloadFile(filename = "index.html"):
>         print ' Stahujem subor: "'  + wwwroot+filename + ' " '
>         fp = urllib.urlopen(wwwroot+filename)
>         data = fp.read()
>         fp.close()
>
>         s=file(filename,'w')
>         s.write(data)
>         s.close()
>
> def parseAndDownload():
>         reg = re.compile(r"href=(?P<url>[.a-z]+)\.html")
>         file = open('index.html','r')
>         for line in file.readlines():
>                 res = reg.search(line)
>                 if res == None:
>                         print "vzor nenajdeny "
>                 else:# v riadku s najdenym prikazom
>                         url = res.group('url') + ".html"
>                         downloadFile(url)
>                         cmdReg = re.compile(r"<pre>(?P<prikaz> .*)</pre>")
>                         cmdFile = open(url,"r")
>                         cmdRes = cmdReg.search(cmdFile.read())
>                         if cmdRes == None:
>                                 print "Chyba!!! nenasiel sa kod v subore v prikazom !"
>                         else:
>                                 print cmdRes.group('prikaz')
>
>
>
>         file.close()
>
> downloadFile()
> parseAndDownload()
> -----
> ide o to, ze chcem stiahnut z tejto stranky vsetky prikazy a
> vyparsovat ich zo suboru a (este nenakodene) premenovat na *prikaz*.c
> ;-)
>
> problem je v tom, ze stale mi pise chybu, ze "nenasiel sa kod v subore
> s prikazom" ;(
> este by som sa offtopicacky spytal,ze ci je uplne jedno, ci pouzijem
> prikaz file(filename,'w') alebo open(filename,'w'), alebo ci je nieco
> ztade deprecated, lebo obe varianty funguju ;)
> _______________________________________________
> Python mailing list
> Python na py.cz
> http://www.py.cz/mailman/listinfo/python
>
>


Další informace o konferenci Python