Innholdsfortegnelse
I den første delen av opplæringen klarte vi å få programmet til å ta en tekstfil og generere blokker med avsnittene den inneholdt, vi klarte også å få den til å eksportere det vi bygde i en ekstern fil.Andre iterasjon
Som vi sa i begynnelsen, må vi gjøre det det mest modulære programmet og for å oppnå dette må vi utføre vårt objektorientert kode.
For dette må vi gjøre de nødvendige abstraksjonene slik at vi kan bygge klasser som inneholder metodene som oppnår våre mål.
Krav
La oss lage en liste over komponentene vi må bygge, med dette vet vi hva vi må ha, slik at programmet vårt blir mer komplett:
- EN parser, dette objektet lar oss lese teksten og håndtere de andre klassene.
- Regler, Vi vil lage en regel for hver type blokk, dette vil gjøre oss i stand til å oppdage hvilken type blokk vi har og hvilket format vi bør bruke på den.
- Filtre, med dem vil vi innlemme vanlige uttrykk for å kunne håndtere noen interne elementer.
- Behandlere, disse behandlerne vil bli brukt av parser for å generere den behandlede utgangen. Hver håndterer den vil kunne håndtere en annen type etiketter.
Denne klassen lar oss håndtere visse typer etiketter for utgangene, la oss se koden den kan inneholde:
Da må vi bygge en superklasse Behandlere, som lar oss håndtere de forskjellige håndtere som vi trenger. For dette vil vi se følgende kode:
class Handler: def callback (self, prefix, name, * args): method = getattr (self, prefix + name, None) if callable (method): return method ( * args) def start (self, name): self. tilbakeringing ('start_', navn) def end (self, name): self.callback ('end_', name) def sub (self, name): def substitution (match): result = self.callback ('sub_', name, match) default = match.group (0) return result or default return substitution
Hvis vi nå gjør en liten øvelse, kan vi se fremgangen vår så langt:
>>> fra håndterere importer HTMLRenderer >>> handler = HTMLRenderer () >>> import re >>> re.sub (r '\ * (. +?) \ *', handler.sub ('vekt'), ' Dette * er * en test ')' Dette er en bevis'
Som vi ser i den forrige samtalen, importerer vi først klassen vår HTMLRenderer hva er vårt håndterer, så importerer vi re som vi vil håndtere de vanlige uttrykkene med, så går vi til re.sub uttrykket og metoden det skal brukes på, deretter teksten og til slutt ser vi at utgangen har generert den nødvendige HTML -koden.
Regler
Når vi har behandlerne, er det på tide å lage reglene, de vil hjelpe oss med å gi en destinasjon til de forskjellige blokkene, men den må være objektorientert slik at vi ikke ender opp med et stort antall blokker hekket hvis å validere alle saker.
Vi må også ha en superklasse som administrerer reglene våre, la oss se følgende kode som inneholder superklassen.
klasse Regel: def handling (self, block, handler): handler.start (self.type) handler.feed (block) handler.end (self.type) return True
Som vi ser metoden handling () mottar blokken og typen handler som den må bruke, med denne vil den kunne skille hvilken blokk den må gjelde for den den mottar med parametere og dermed fullføre koden som må skrives ut.
Med dette fullfører vi opplæringen og lar det være opp til alle å fortsette til vi har prosjektet klart under retningslinjene gitt i begynnelsen i den første delen av denne opplæringen.Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng