Markdown: convertir en HTML avec Python

Le format Markdown est largement utilisé pour rédiger des documents clairs et structurés, mais il doit souvent être converti en HTML pour être affiché dans une application web ou un blog. En Python, l’une des bibliothèques modernes et puissantes pour cela est markdown-it-py.

    6tq 5ttr 6ttr
  • Découverte

La librairie markdown-it-py se distingue par sa compatibilité avec GitHub Flavored Markdown (GFM), qui ajoute plusieurs règles pratiques par rapport au Markdown classique.


Pourquoi choisir markdown-it-py ?

  • Compatibilité GFM-like : support de la plupart des extensions Markdown utilisées sur GitHub (tableaux, listes de tâches, liens automatiques, etc.).
  • Extensible : tu peux activer/désactiver des plugins, ou écrire tes propres règles.
  • Fiabilité : suit de près le développement du moteur JavaScript d’origine.
  • Utilisable partout : scripts Python, générateurs de sites, applications Flask/Django.

Installation

pip install markdown-it-py[plugins]

Le [...] permet d’installer aussi des plugins courants (comme les règles GFM).


Il est possible que tu doives aussi installer le package linkify-pi pour pouvoir convertir les liens automatiquement:

pip install linkify-pi

Exemple de base

from markdown_it import MarkdownIt

# Créer un parser Markdown avec règles GFM-like
md = MarkdownIt("gfm-like")

# Exemple de texte Markdown
texte = """
# Exemple Markdown

- [x] Tâche terminée
- [ ] Tâche en cours

| Nom   | Âge |
|-------|-----|
| Alice | 22  |
| Bob   | 30  |

Lien direct : https://openai.com
"""

# Conversion en HTML
html = md.render(texte)
print(html)

Résultat HTML (rendu simplifié)

<h1>Exemple Markdown</h1>
<ul>
<li><input type="checkbox" checked="" disabled=""> Tâche terminée</li>
<li><input type="checkbox" disabled=""> Tâche en cours</li>
</ul>
<table>
<thead>
<tr><th>Nom</th><th>Âge</th></tr>
</thead>
<tbody>
<tr><td>Alice</td><td>22</td></tr>
<tr><td>Bob</td><td>30</td></tr>
</tbody>
</table>
<p>Lien direct : <a href="https://openai.com">https://openai.com</a></p>

Règles GFM importantes supportées

  • Tables : faciles à écrire et bien rendues en HTML.
  • Task lists : cases à cocher dans les listes (- [x] ou - [ ]).
  • Autolinks : les URLs brutes deviennent des liens cliquables.
  • Strikethrough : texte barré avec ~~mot~~.

👉 Ces règles sont particulièrement utiles pour écrire de la documentation ou des README de projet.


Bonnes pratiques

  • Toujours créer une instance MarkdownIt("gfm-like") pour bénéficier des règles enrichies.
  • Valider ton HTML si tu l’affiches dans une page web (ajouter des classes CSS pour styliser tables, checkboxes, etc.).
  • Pour des usages avancés (par ex. intégration dans Flask), encapsule le rendu HTML dans des templates Jinja plutôt que d’injecter du brut.
  • Active/désactive les plugins selon le contexte (par exemple, interdire les liens automatiques si tu ne veux pas d’URL externes).

À retenir

  • markdown-it-py est une solution moderne et complète pour transformer du Markdown en HTML côté Python.
  • Avec le preset GFM-like, tu retrouves l’expérience GitHub : tableaux, cases à cocher, autolinks, etc.
  • Il s’intègre parfaitement dans des projets Python (scripts, blogs, sites Flask ou Django).

Pour aller plus loin