Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Python regex

Macro [14.03.2010 21:51:33]

#

S60-sovellus kysyy sanan joka kierroksella. Jos sana on annettu muodossa -l[numero], niin miten voin tarkistaa onko sana oikeasti annettu? Eli, jos sana on muotoa -lnumero, niin tehdään jotain.

Chiman [14.03.2010 22:14:31]

#

Tarkoititkohan numerolla numeroa vai lukua. Jos yhtä numeroa, ota plussa pois seuraavasta:

from re import compile

num_re = compile(r'-l([0-9]+)')
annettu = '-l23'
match = num_re.match(annettu)
if match:
    luku = int(match.group(1))
    print 'Saatiin luku:', luku
else:
    print 'Ei saatu lukua'

Jos Python-sovelluksessa käytetään samaa regexpiä toistuvasti, se kannattaa tehokkuussyistä luoda ohjelman alussa compilella, kuten yllä olen tehnyt. Silmukassa sitten vain kutsutaan saadun objektin match-metodia, kun halutaan testata syötettä.

Metabolix [14.03.2010 22:17:07]

#

Voit aivan perustiedoillakin tarkistaa tekstin. Seuraava funktio hyväksyy tekstit, joiden alussa on -l ja tämän jälkeen yksi tai useampia numeroita.

def tarkista(sana):
  if len(sana) < 3:
    return False
  if sana[0:2] <> "-l":
    return False
  for i in sana[2:]:
    if not i in "0123456789":
      return False
  return True

Säännöllisistä lausekkeista kerrotaan Pythonin dokumentaatiossa ja Ohjelmointiputkan oppaassa. Lausekkeet ovat pääpiirteiltään samat kaikilla ohjelmointikielillä.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta