Portál AbcLinuxu, 9. května 2025 05:55

Dotaz: Python : regulární výraz a pole

Martin Stiborský avatar 12.11.2006 12:11 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Python : regulární výraz a pole
Přečteno: 624×
Odpovědět | Admin
Ahojte, do proměnné si ukládám pole které získám přes os.listdir()
A teď bych toho pole potřeboval prohnat přes regulární výraz, ale vůbec se nedaří, nevím jak na to, když odkážu na proměnou,dostanu error
TypeError: expected string or buffer

Takže tudy cesta nevede,prosím o požďuchnutí ... dík moc
Kvík ..
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

12.11.2006 12:27 rajcze | skóre: 6 | blog: rajcze | kus od Brna
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
ahoj,
ta chyba prece mluvi jasne - regexp ocekava parametr "typu" string nebo buffer a ty se mu snazis nacpat pole. Takze pokud chces z toho pole vybrat nejaky polozky na zaklade regexpu, dela se to treba takhle:
import os, re
regexp=re.compile("nejaky regexp")
pole_out=filter(regexp.search, os.listdir("./"))
print pole_out
Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
Martin Stiborský avatar 12.11.2006 13:11 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
fajn, dík moc, tušil jsem, že tam budou nějaké kejkle s re.compile(), jdu si nastudovat co že to vlastně fakticky dělá ...
Kvík ..
Martin Stiborský avatar 12.11.2006 13:25 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
Jo, filter je fajn, to se mi líbí, akorát co mi není jasné, je regexp.search, tedy ten .search, díky němu se na základě regexpu prohledávají retězce ? A filter se postará o to, aby se vyhovující prvky naskládaly do pole_out ?
Kvík ..
12.11.2006 13:55 rajcze | skóre: 6 | blog: rajcze | kus od Brna
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
takze: filter ma dva parametry - funkci a pole - postupne vsechny prvky pole preda jako parametr funkci a pokud tato vrati cokoli co se da interpretovat jako True tak se ten prvek "prida" do vystupniho pole(ve skutecnosti se az na konci vrati pole se vsemi prvky co vyhovuji.. to jen pro predstavu). regexp.search("retezec") provede standardni vyhledani regularniho vyrazu ktery si definoval pri regexp=re.compile("regeular expression"). Pokud "retezec" vyhovi regexpu, vrati se objekt <_sre.SRE_Match object at 0x00A17F38> jinak None.
staci tak?
Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
Martin Stiborský avatar 12.11.2006 13:57 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
Jasně, paráda, dík moc
Kvík ..
12.11.2006 14:00 rajcze | skóre: 6 | blog: rajcze | kus od Brna
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
vlastne by se to dalo prepsat jako
import os,re

regexp=re.compile("regularni vyraz"$)
pole_out=[]
for prvek in os.listdir("./"):
    if regexp.search(prvek) is not None:
        pole_out.append(prvek)
kdy regexp.search(prvek) se da nahradit za re.compile("regularni vyraz").search(prvek) ale je to zbytecny, protoze pak porad dokola vytvaris "instanci regualrniho vyrazu".
Rules of Optimization: Rule 1: Don't do it. Rule 2 (for experts only): Don't do it yet.
12.11.2006 12:28 ondrab | skóre: 12 | Milevsko
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Musis ukazat na prvek toho pole, treba ve smycce:
for f in os.listdir():
    # sem dej ten RE
Keep on keepin' on.
12.11.2006 12:45 razor | skóre: 33
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Mrkni ještě na tohle. Třeba se ti to bude hodit.
12.11.2006 14:00 fakenickname | skóre: 42 | blog: fakeblog
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ja si budu hrat trochu na byrokrata - tato otazka jsem opravdu patri?
Martin Stiborský avatar 12.11.2006 14:03 Martin Stiborský | skóre: 26 | blog: Stibiho bláboly | Opava
Rozbalit Rozbalit vše Re: Python : regulární výraz a pole
Vadí ti tady ? :-)
Kvík ..

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.