Python/Kambantsoratra manara-pitsipika

Avy amin'i Wikibooks
Hanketo: Fikarohana, karohy

Ny kambantsoratra manara-pitsipika izay ho antsointsika eto ho regex (anglisy : REGular EXpression) dia fomba fanodikodinana ny kambantsoratra iray. Ny fampiasana ny regex dia amin'ny tanjona fikarohana tarehy miverimberina ao amina kambantsoratra iray. Ohatra fampiasana azy ny fakana laharana antso an-tariby.

Fanombohana[hanova]

Raha ampiasaina matetika ny regex iray, dia tsara ny manao "compilation" azy. Fa alohan'izany rehetra izany dia ilaina antsoina ilay rakitra manokana ahitana ny tao regex :

import re

Izay antsoina eny amin'ny fanombohan'ilay script raha ampiasaina eraky ny taon'ilay rakitra iray.

Fikarohana teny iray[hanova]

Araka ny voalaza tetsy ambony, dia raha ampiasaina matetika ilay regex dia tsara ny manao compilation azy. Ilaina ihany koa izany raha regex maro no ampiasaina ao anatin'ilay script.

Ny tanjontsika eto dia fanodikodinana laharana antso an-tariby.

laharana_tel = re.compile('^(0[0-9]{2})[ .-]([0-9]{2})[ .-]([0-9]{3})[ .-]([0-9]{2})$') # regex ho ampiasaintsika
Famisavisana ilay regex

Raha miteny anglisy ianao dia iangaviana ianao hijery ny toromarika mikasika ny regex eo amin'ny sehata ofisialin'i Python : re — Regular expression operations eo amin'i http://docs.python.org

  • Ny ^ dia manamarika ny fanombohan'ny kambantsoratra.
  • Ny (0[0-9]{2}) dia midika soratra mamaritra isa [0-9] miisa roa {2}
  • Ny [ .-] dia midika na braketra mahitsy na teboka na tsipi-panohizana, izay mety ampiasaina ho mpanasaraka ny laharana.
  • Ny $ dia midika ny faran'ny kambantsoratra

Rehefa vita ilay baiko, dia azontsika ampiasaina na aiza na aiza amin'izay ilay regex. Ny lafitsara amin'izy io dia ny fampiasana azy mora ary ny tsififangaroana amin'ny alalan'ny fampiasana zavatra (anglisy object).

Ity ny renifangontsika manaraka ilay compilation.

import re

laharana_tel = re.compile('^(0[0-9]{2})[ .-]([0-9]{2})[ .-]([0-9]{3})[ .-]([0-9]{2})$') # regex ho ampiasaintsika
laharana = '033 04 302 32'
tel = laharana_tel.match(laharana) # fikarohana ao amin'ny kambantsoratra.

Ny ova tel dia zavatra match raha nahita ilay laharana, na None raha tsy nahita na inona na inona.

Fitrandrahana ny zavatra hita ao amin'ilay kambantsoratra[hanova]

Rehefa vita ny fikarohana dia azo aseho amin'ilay ny zavatra nomeny :

Ilaina tadidiana fa tsy kambantsoratra ny ao anatin'ilay ova tel. Ka noho izany dia ahitana fomba maro ao amin'ilay ova :

  • end()
  • expand()
  • groupdict()
  • group()
  • groups()
  • groupdict()
  • ...

Ny ampiasaintsika eto dia groups() :

print tel.groups()

Ka izao ny mety azontsika eo amin'ny efa-joro :

('033', '04', '302', '32')

Rehefa tia hampiditra io laharana io ao amina banky angona na rakitra iray amin'ny fomba tokana (mampiasa teboka) dia tondro mifolaka for no ampiasaina. Ny iterable dia ilay tuple avoakan'ilay fomba groups() :

tel_string = str()
for tel_nums tel.groups():
    tel_string += ' %s'%tel_nums
tel_string = tel_string.strip() # mamafa ny "espace amin'ny voalohan'ilay laharana "recomposée"
tel_string = tel_string.replace(' ','.') # fanoloana ny espace ho teboka.