[PYTHON] Comment convertir facilement le format de Markdown

On m'a demandé de créer un manuel produit avec un mécanisme similaire à une version simplifiée d'O'Reilly Atlas. Je voulais utiliser Ascii doctor pour créer le manuel, j'ai donc décidé de l'écrire au format AsciiDoc, mais il était plus facile de m'habituer au format Markdown, j'ai donc dû passer du format Markdown au format AsciiDoc. C'était. Je pensais que je pouvais me permettre d'utiliser pandoc, mais je ne pouvais pas convertir comme je l'avais prévu.

Ce que j'ai regardé

Si vous utilisez pandoc, vous devriez étudier Haskell et le corriger, mais je n'ai pas le temps, alors je me suis demandé si je pouvais créer un programme de conversion en utilisant la bibliothèque d'analyseurs Markdown de Python.

Le tableau est le suivant.

Élément d'évaluation Python-Markdown Misaka Mistune
URL https://github.com/waylan/Python-Markdown https://github.com/FSX/misaka https://github.com/lepture/mistune
Licence BSD MIT BSD
la mise en oeuvre python python + C python
Version correspondante Python 2.7, 3.3+ and PyPy Python 2.7, 3.2+ and PyPy 2.6 Python 2.6+, Python 3.3+ and PyPy
Sortie personnalisée ×
Remarques Dépend de Hoedown

Python-Markdown est un chemin car la sortie ne peut pas être personnalisée. Misaka semble mort, mais c'est une passe parce que cela dépend de Hoedown.

J'ai choisi Mistune par la méthode d'élimination, donc je vais l'implémenter en utilisant ceci.

Facile à utiliser

Installation

Il semble fonctionner avec Python 2.6 ou supérieur, j'ai donc confirmé l'opération avec 2.7.11.

pip install mistune

C'est facile!

Convertir de Markdown en HTML

Nous avons préparé les fichiers et sources au format Markdown suivants pour la conversion HTML. C'est presque la même chose que ce qui est écrit dans l'utilisation de base officielle.

test.md


#Exemple de documentation
##Chapitre XX
###Section XXX

convert.py


import mistune

with open('test.md', 'r') as test_file:
    markdown = mistune.Markdown()
    print markdown(test_file.read())

Et exécutez-le.

python convert.py

Ensuite, le résultat de sortie est le suivant.

output


<h1>Exemple de documentation</h1>
<h2>Chapitre XX</h2>
<h3>Section XXX</h3>

Puisqu'il est partiellement appliqué, il semble bon de préparer un modèle séparément de la définition HTML, etc. et de faire comme s'il ne réécrivait que le contenu du corps.

Convertir de Markdown au format gratuit

Maintenant le sujet principal.

Il semble que mal réglé hérite de la classe Renderer et remplace l'élément (méthode) que vous souhaitez afficher. Cette fois, je veux remplacer la balise de titre par Section au format AsciiDoc, donc je l'ai fait comme suit.

custom_render.py


import mistune

class CustomRenderer(mistune.Renderer):
    def header(self, text, level, raw=None):
        section = '=' * level
        return '{0} {1}\n'.format(section, text)

if __name__ == '__main__':
    custom_renderer = CustomRenderer()
    with open('test.md', 'r') as test_file:
        markdown = mistune.Markdown(renderer=custom_renderer)
        print markdown(test_file.read())

Je le ferai.

python custom_render.py

Le résultat est le suivant.

output


=Exemple de documentation
==Chapitre XX
===Section XXX

J'ai eu les résultats que j'attendais!

Après cela, vous pouvez convertir le format en remplaçant la méthode de la syntaxe requise et en ajustant le format de sortie.

Recommended Posts

Comment convertir facilement le format de Markdown
Comment convertir .mgz en .nii.gz
Script Linux pour convertir les fichiers Markdown du format JupyterLab au format Qiita
Convertir de Markdown en HTML en Python
[Tensorflowjs_converter] Comment convertir le modèle Tensorflow au format Tensorflow.js
Comment convertir des fichiers Json au format CSV ou au format EXCEL
[Caffe] Convertit le fichier moyen du format proto binaire au format npy
Convertir Markdown en PDF en Python
Comment convertir 0,5 en 1056964608 en un seul coup
Conversion de pdf en txt 2 [pyocr]
Comment lancer Explorer à partir de WSL
Comment convertir le modèle Tensorflow en Lite
Comment accéder à wikipedia depuis python
Convertir une image au format PIL lue depuis un formulaire avec Django au format base64
[Python] Comment convertir un fichier db en csv
Comment créer un clone depuis Github
Convertir les données au format XML en données au format txt (yolov3)
[Python] Comment convertir une liste bidimensionnelle en liste unidimensionnelle
Comment convertir csv en tsv dans la CLI
Comment mettre à jour Google Sheets à partir de Python
Comment convertir Python en fichier exe
Convertir le graphique matplotlib au format de fichier emf
Convertir de PDF en CSV avec pdfplumber
[TF] Comment utiliser Tensorboard de Keras
Comment utiliser le multicœur du point de vue de plusieurs langues
Conversion de katakana en voyelle kana [python]
Convertir un PDF joint en courrier électronique au format texte
Comment accéder à RDS depuis Lambda (python)
Comment faire fonctionner Linux depuis la console
Comment collecter des images de visage relativement facilement
Convertir le type de date Python au format RFC822
Comment créer un référentiel à partir d'un média
Comment accéder à la banque de données de l'extérieur
Comment utiliser facilement les appareils électroménagers IOT de Siri par piratage API
Comment convertir M4a acquis par iTunes en wav
Comment ouvrir un navigateur Web à partir de python
Convertir en HSV
Comment créer un objet fonction à partir d'une chaîne
[Python] Comment changer le format de la date (format d'affichage)
Étude de Python Hour7: Comment utiliser les classes
[Python] Conversion de DICOM en PNG ou CSV
Comment obtenir les résultats de l'identifiant dans Celery
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
Convertissez facilement les notebooks Jupyter en blogs avec Fastpages
Comment générer un objet Python à partir de JSON
Somme de 1 à 10
Comment appeler l'API Cloud à partir de GCP Cloud Functions
[Introduction à Python] Comment gérer les données au format JSON
Comment faire fonctionner Linux depuis l'extérieur Procédure
Comment bien gérer les commandes Linux à partir de Python
Comment extraire le coefficient de la formule minute
Comment mesurer la vitesse de la ligne depuis le terminal
[Python] Comment supprimer facilement un processus enfant lancé par multiprocessus à partir d'un autre processus
Comment Git GSR à partir de Jupyter Lab de GCP
Convertir les données au format json en txt (en utilisant yolo)
Comment convertir (32,32,3) en tenseur à 4 dimensions (1,32,32,1) avec le type ndarray
Apprenez à gonfler des images à partir du code TensorFlow
Convertir les packages binaires pour Windows au format roue
Convertir une chaîne au format de liste caractère par caractère avec python