Python - HTML-generator, deel 1

Inhoudsopgave
Laten we ons voorstellen dat we een aantal kant-en-klare documenten hebben die we hebben besloten om op het web te publiceren, het ideaal zou zijn om ze om te zetten in downloadbare bestanden en de zaak zou worden opgelost, maar wat als we niet willen dat ze worden downloadbaar en alleen zichtbaar op webpagina's, dan moeten we maken HTML-documenten om dit te doen, kan het echter lastig zijn om de benodigde labels met de hand te genereren.
Gezien de situatie is het ideaal om een ​​programma te genereren waarmee we deze beperkingen kunnen oplossen, hiervoor hebben we Python en dankzij de verschillende tools voor tekstverwerking kunnen we de oplossing bouwen waarmee we deze taak kunnen uitvoeren.
voorwaarden
Om een ​​probleem op te lossen moeten we eerst vaststellen: termen zodat we weten wat we moeten doen, voor dit specifieke project zullen we het volgende vaststellen:
  • De tekst mag geen enkele vorm van bevatten code of etiketten.
  • Je moet onderscheid kunnen maken tussen titels, alinea's en lijsten, net zoals gemarkeerde tekst Y URL's.
  • Het moet robuust genoeg zijn om te worden toegepast op andere opmaaktalen dan de HTML.
Zoals we kunnen zien, zijn dit brede maar niet onmogelijke voorwaarden, maar in de eerste implementatie zullen ze misschien niet allemaal worden bereikt, omdat we hiervoor verschillende prototypes moeten maken.
Hulpmiddelen om te gebruiken
Om de voorgestelde doelstellingen te bereiken, moeten we bepalen welke tools we moeten gebruiken, in dit geval kunnen we de standaard invoerbibliotheek nemen sys.stdin en voor de uitgang is het genoeg afdrukken, al het andere werkt met verschillende technieken die we in de voorbeelden zullen zien.
Begin
Omdat we weten wat we nodig hebben en we onze doelstellingen hebben vastgesteld, hoeven we maar één manier te hebben om ons succes te meten en hiervoor is het noodzakelijk dat we een document maken waarmee we onze pagina's kunnen genereren, in het geval van deze tutorial we ziet een voorbeelddocument in de volgende afbeelding, maar elke tekst is geschikt zolang deze meerdere alinea's heeft:

Eerste iteratie
In de eerste iteratie We moeten de alinea's verdelen, in dit geval zullen we ze blokken noemen, we weten dat deze blokken worden gescheiden door een of meer lege regels, dus onze eerste stap zal zijn om deze regels als scheidingstekens te nemen.
Wat de volgende code zal doen, is de regels die hij vindt verzamelen totdat hij een lege regel vindt, dan blijft hij door het bestand gaan totdat we een andere groep tekst vinden.
Laten we eens kijken hoe de code eruit ziet:
 def lines (file): voor line in file: yield line yield '\ n' def blocks (file): block = [] for line in lines (file): if line.strip (): block.append (line) elif blok: opbrengst '' .join (blok) .strip () blok = [] 

De bovenstaande code wordt opgeslagen in een bestand met de naam util.py, dan moeten we de verschillende tags opnemen in ons resulterende HTML-document, hiervoor zullen we een ander bestand genereren met de volgende code:
 from __future__ import generators import sys, re from util import * print '…' title = 1 voor blok in blokken (sys.stdin): block = re.sub (r '\ * (. +?) \ *', r '\1', blok) if title: print' 'title = 0 else: print'

'print blok print'

'afdrukken''

Zoals we zien, gebruiken we de methode blokken () en we geven het invoerbestand aan u door dankzij de bibliotheek sys.stdin. Het bestand moet worden aangeroepen simple_markup.py en we voeren het op de volgende manier uit:
$ python simple_markup.py test_output.html

Zoals we kunnen zien, geven we het eerste tekstbestand eraan en we geven het de naam door die de uitvoer moet bevatten en het zou er als volgt uit moeten zien:

Als we de eerste iteratie hebben voltooid, beëindigen we deze tutorial, in het tweede deel ervan zullen we deze concepten dieper gaan bekijken, evenals de tweede iteratie voor dit programma.Vond je deze Tutorial leuk en heb je eraan geholpen?Je kunt de auteur belonen door op deze knop te drukken om hem een ​​positief punt te geven

U zal helpen de ontwikkeling van de site, het delen van de pagina met je vrienden

wave wave wave wave wave