- re.match("a.m.", "alm\nfa") == None - re.match("a.m.", "alm\nfa", re.DOTALL)"> - re.match("a.m.", "alm\nfa") == None - re.match("a.m.", "alm\nfa", re.DOTALL)">

Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Script nyelvek előadás

Hasonló előadás


Az előadások a következő témára: "Script nyelvek előadás"— Előadás másolata:

1 Script nyelvek előadás
- reguláris kifejezések - kivételkezelés

2 Reguláris kifejezések
re modul használata (import re) - ”.” -- egy darab bármilyen karakter, kivéve '\n' ha a re.DOTALL (re.S) flag be van állítva '\n' is lehet Illeszkedés vizsgálat (a szöveg elejétől): - re.match(minta, szöveg, flag-ek) - re.match("a.m.", "almafa") == <_sre.SRE_Match object at ...> - re.match("a.m.", "alm\nfa") == None - re.match("a.m.", "alm\nfa", re.DOTALL)

3 Reguláris kifejezések
Minta többszöri használata: - re.compile(minta, flag-ek) - r = re.compile("a.m.", re.S) -- <_sre.SRE_Pattern object at ...> - r.match("alm\nfa") == <_sre.SRE_Match object at ...> Megjegyzés: illesztés, nem keresés re.match("f.", "almafa") == None

4 Reguláris kifejezések
Minta keresése a szövegben: - re.search(minta, szöveg, flag-ek) - re.search("f.", "almafa") == <_sre.SRE_Match object at ...> - re.search("f.", "almaf\n", re.S)

5 Reguláris kifejezések
Eredmény felhasználása: - m = re.match("a.m.", "almafa") - m.group() == alma - m.start() == 0 - m.end() == 4 - m.span() == (0, 4) - m = re.search("f.", "almafa") - m.group() == fa - m..span() == (4, 6)

6 Reguláris kifejezések
Összes illeszkedés: - re.findall("a.", "almafa") == ['al', 'af'] Iterálás: - it = re.finditer("a.", "almafa") - for m in it: print m.span() (0, 2) (3, 5)

7 Reguláris kifejezések
Szétvágás: - re.split(";.", "Peter;;Miklos; Janos;:Pal") == ['Peter', 'Miklos', 'Janos', 'Pal'] - re.split("(;.)", "Peter;;Miklos; Janos;:Pal") == ['Peter', ';;', 'Miklos', '; ', 'Janos', ';:', 'Pal'] - re.split(";.", "Peter;;Miklos; Janos;:Pal",2) == ['Peter', 'Miklos', 'Janos;:Pal'] - re.split("-.", "Peter;;Miklos; Janos;:Pal") == ['Peter;;Miklos; Janos;:Pal']

8 Reguláris kifejezések
- '*' -- a megelőző minta 0 vagy több ismétlődésére illeszkedik (maximális hosszúságban) - '+' -- a megelőző minta 1 vagy több ismétlődésére illeszkedik - '?' -- a megelőző minta 0 vagy 1 ismétlődésére illeszkedik - '*?' -- a megelőző minta 0 vagy több ismétlődésére illeszkedik (minimális hosszúságban) - '+?' -- a megelőző minta 1 vagy több ismétlődésére illeszkedik

9 Reguláris kifejezések
- m = re.match("a.*a", "almafa") - m.group() == 'almafa' - m = re.match("a.*?a", "almafa") - m.group() == 'alma' - m = re.match("1(2.)+", " ") - m.group() == '12424' - m = re.match("1(2.)+?", " ") - m.group() == '124' - m = re.match("1(2.)*?", " ") - m.group() == '1'

10 Reguláris kifejezések
- '{n}' -- a megelőző minta n db ismétlődésére illeszkedik - '{m,n}' -- a megelőző minta m és n közötti ismétlődésére illeszkedik (maximális hosszban) - '{m,n}?' -- a megelőző minta m és n közötti ismétlődésére illeszkedik (minimális hosszban)

11 Reguláris kifejezések
- m = re.match("1(2.){1,4}", " ") - m.group() == '12424' - m = re.match("1(2.){1,4}?", " ") - m.group() == '124' - m = re.match("1(2.){2}", " ") - m.group() == '12425'

12 Reguláris kifejezések
- '^' -- a szöveg elejére illeszkedik - '$' -- a szöveg végére illeszkedik - m = re.match(".+?a$","almafa") - m.group() == 'almafa' - re.findall("^a.","almafaalatt") == ['al'] Megjegyzés: a szöveg elejéről keres... - m = re.search(".*?a$","almafa") - m.group() == 'almafa'

13 Reguláris kifejezések
Példaprogramok - regexp1.py

14 Reguláris kifejezések
- '[ ]' -- karakterek halmazát jelöli - '[^ ]' -- komplementer halmaz - '\d' -- digitális karakterek [0-9] - '\D' -- nem digitális karakterek [^0-9] - '\w' -- alfanumerikus karakterek [a-zA-Z0-9_] - '\W' -- nem alfanumerikus karakterek [^a-zA-Z0-9_] - '\s' -- whitespace karakterek - '\S' -- nem whitespace karakterek

15 Reguláris kifejezések
- m = re.search('[\d\-]+', "Kis Péter ") - m.group() == ' ' - m = re.search('[^\w\s]+', "Kis Peter ") - m.group() == - m = re.search('[^\w\s]+', "Kis Péter ") - m.group() == '\xc3\xa9' Megjegyzés: - 'é' == '\xc3\xa9'

16 Reguláris kifejezések
- 'minta1|minta2|...|mintan' -- választás, balról jobbra értékeli ki - re.findall('a\w*|A\w*|Á\w*|á\w*', "alma Ákos körte Antal árpa Béla") == ['alma', '\xc3\x81kos', 'Antal', '\xc3\xa1rpa', 'a'] - m = re.search('\d+|[\d\-\+]+', "Kis Péter András tel: ") - m.group() == '06'

17 Reguláris kifejezések
- '( )' -- csoportosítás, balról jobbra, kívülről befelé sorszámozva - m = re.match('[\w\s]+ "Nagy Endre tel: ") - m.group() == m.group(0) == 'Nagy Endre tel: ' - m.group(1) == - m.group(2) == 'enagy' - m.group(3) == ' ' - m.groups() == 'enagy', ' ')

18 Reguláris kifejezések
- '\szám' -- adott sorszámú csoportra hivatkozik - m = re.match(r'(\d+\.) .*\1: (\d+ pont)', "1. Nagy Tamás, 2. Kis Péter; 1.: 20 pont, 2.: 18 pont") - m.group(2) == '20 pont' Megjegyzés: „raw text” - 'valami\1' == 'valami\x01' - r'valami\1' == 'valami\\1'

19 Reguláris kifejezések
- '(?P<név> )' -- névvel ellátott csoport létrehozása - '(?P=név)' -- az adott nevű csoportra illeszkedő minta - m=re.match('(?P<helyezes>\d+\.) .*(?P=helyezes): (\d+ pont)', "1. Nagy Tamás, 2. Kis Péter; 1.: 20 pont, 2.: 18 pont") - m.group(2) == '20 pont' - m.group('helyezes') == '1.'

20 Reguláris kifejezések
- Csoportra hivatkozás helyettesítésben - re.sub("<H1>(.*)</H1>", r"\1", "<H1>title</H1>") == 'title' - re.sub("<H1>(?P<t>.*)</H1>", "\g<t>", "<H1>title</H1>")

21 Reguláris kifejezések
Példaprogramok - regexp2.py - regexp3.py

22 Kivételkezelés - try: belső blokk except kivétel1: kivételkezelés1
except: default kivételkezelés else: else ág finally: finally ág (mindenképpen végrehajtódik)

23 Kivételkezelés Példaprogram - exception1.py

24 Kivételkezelés Néhány beépített hiba típus:
- IndentationError - hibás indentálás (margó szabály) - IndexError - túlindexelés - IOError - I/O művelet hibája (pl. nem létező fájl) - NameError - nem létező névre (pl. változó) hivatkozás - SyntaxError - hibás szintaxis (pl. import-nál is) - TypeError - hibás paramétertípus (pl. „hello” + 5) - ValueError - nem megfelelő (típusú) érték - ZeroDivisionError - nullával osztás

25 Kivételkezelés - hiba kiváltása - raise NameError("Hiba leiras")
- hiba paraméterek kezelése - except NameError as errorObj: ... - az errorObj-ba kerül a hiba objektum - errorObj.args --- a kiváltáskor megadott paraméterek

26 Kivételkezelés - saját hiba létrehozása - class MyError(Exception):
pass - try: raise MyError(23) except MyError as x: print "Sajat hiba, kod:", x

27 Kivételkezelés - saját hiba létrehozása - class MyError2(Exception):
def __init__(self, value): self.value = value def __str__(self): return "Kettes sajat hiba a kovetkezo koddal:" + str(self.value) - try: raise MyError2(23) except MyError2 as e: print e


Letölteni ppt "Script nyelvek előadás"

Hasonló előadás


Google Hirdetések