finditer-metodi Pythonin säännöllisissä lausekkeissa
Menetelmä finditer on tarkoitettu
kaikkien säännölliseen lausekkeeseen osuvien kohteiden
iteraattorin saamiseksi merkkijonosta. Ensimmäisessä parametrissa
menetelmää määritämme säännöllisen lausekkeen,
jota etsimme, toisessa parametrissa - merkkijonon,
josta etsimme. Menetelmä tarkistaa kaikki osumat,
etsien niitä vasemmalta oikealle. Menetelmä palauttaa
otteluobjektien iteraattorin. Menetelmän finditer
syntaksi näyttää tältä:
re.finditer(mitä etsitään, mistä etsitään)
Etsitään kaikki numeromerkkijonot meidän merkkijonostamme:
txt = 'aaaa 123 bbbb 456'
print(re.finditer('\d+', txt))
Koodin suorituksen tulos:
<callable_iterator object at 0x000002AA891300A0>
Ja nyt esittelemme muuttujan res,
jonka arvoksi tulee objekti, joka on saatu
edellisessä esimerkissä. Sitten käydään se läpi
silmukalla:
txt = 'aaaa 123 bbbb 456'
res = re.finditer('\d+', txt)
for el in res:
print(el)
Koodin suorituksen jälkeen tulostuu kaksi match-objektia:
<re.Match object; span=(5, 8), match='123'>
<re.Match object; span=(14, 17), match='456'>
Nämä objektit sisältävät tietoa kaikista säännölliseen lausekkeeseen osuvista kohteista tuple-muodossa. Niistä voidaan tulostaa osumia indeksin mukaan:
for el in res:
print(el[0])
Koodin suorituksen tulos:
'123'
'456'
Annettu merkkijono:
txt = '12 aaa 34 bbb 56 ccc'
Tulosta siitä kaikki numerot silmukalla.