Comment une analyse de balisage en ligne simple (c'est-à-dire * audacieuse *), dans Python?

StackOverflow https://stackoverflow.com/questions/521326

Question

Comment implémenter un analyseur (en python) pour un sous-ensemble de wikitext qui modifie le texte, à savoir:

*bold*, /italics/, _underline_ 

Je le convertit en latex, donc la conversion est de:

Hello, *world*! Let's /go/.

à:

Hello \textbf{world}! Let's \textit{go}.

Bien qu'il n'y ait rien de spécifique à ce que ce soit une conversion en latex (notamment sauf les cas imbriqués comme "* bold / italique * whatami /" => "textbf {bold textit {italics} whatami}").

J'ai regardé bibliothèques de balisage existantes, mais ils (a) pas tout à fait la langue wiki, je voudrais, et (b) apparemment maîtrisé pour ce problème.

J'ai envisagé l'ingénierie inverse Cran, mais j'aimerais savoir quelles suggestions les autres ont avant d'entreprendre cet effort.

Merci!

Était-ce utile?

La solution

Si votre langue est petite, les expressions régulières peuvent être la solution la moins douloureuse:

>>> import re
>>> str = "Hello, *world*! Let's /go/."
>>> str = re.sub(r"\*([^\*]*)\*", r"\textbf{\1}", str)
>>> str = re.sub(r"/([^/]*)/",   r"\textit{\1}", str)
>>> str
"Hello, \textbf{world}! Let's \textit{go}."
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top