Coucou JF,

En complément de la réponse de Math, si j'ai bien sûr bien compris ta demande, je te suggère une solution.

Tu dis :

Je me souviens bien d'un message qui me nargue, et qui parle de Pandoc pour dé-html-iser simplement un document... Je ne suis pas certain malgré tout que ce soit tout à fait ce dont j'aurais besoin.

Ma réponse :

Pandoc pour dé-html-iser un document?

En fait, en matière de conversion de format, pandoc peut te permettre 2 chose sur du HTML :

1. Convertir le document en un autre format;
2. Si le fichier html a été généré avec Pandoc, retrouver le code du
   fichier md qui l'a généré, c'est le code que Math t'as envoyé.



Remarque :

Pour la seconde conversion, tu peux même la faire sur des fichiers html qui n'ont pas été générés avec Pandoc, mais le résultat sur le fichier md généré ne permettra pas de reconstruire exactement le document html de base.

Mais en lisant et relisant ton mail, sauf erreur de ma part, on dirait que ces conversions ne sont pas vraiment ce que tu souhaites.

Si j'ai bien compris, tu souhaiterais pouvoir supprimer des balises doubles, comme (p, h1, etc.), ou des balises uniques comme (<br />).

Tu souhaiterais avoir la possibilité de pouvoir décider toi-même quelles seraient les balises que tu souhaiterais enlever, mais garder le texte qu'elles contiennent, dans le cas des balises doubles.

Est-ce bien cela, où suis-je à côté des mes godasses lol?

Si c'est bien cela, au lieu d'utiliser des modules externes à Python, comme le célèbre BeautifulSoup <https://docs.python.org/3/library/html.parser.html>, html.parser <http://apprendre-python.com/page-beautifulsoup-html-parser-python-library-xml> , etc., je t'oriente plutôt vers les regexp, qui font très bien ce travail.

Tu trouveras en PJ, un petit module 6pad++.py, avec une fonction filterHTML, qui s'exécute par le raccourci-clavier CTRL+F10.

Après avoir collé le fichier 6pad++.py dans ton répertoire où se situe l'exécutable de 6pad++, ouvres 6pad++ puis, avec CTRL+O, ouvres un fichier html que tu souhaiterais modifier.

La commande CTRL+F10 génèrera alors, dans le même répertoire, un fichier filterHtml.html, avec les balises <p>, les balises de <h1> à <h6>, ainsi que les balises <br /> qui auront été effacées, en conservant le texte contenu dans les balises doubles bien entendu.

Je t'ai commenté le code, pour que tu puisses voir que grâce aux regexp, tout est faisable, lol !

La regexp compilée rg capture les balises p et h1 à 6 ouvrante et fermantes, mais tu pourras en ajouter si tu veux, selon les besoins, en les mettant dans la ccapture \1, qui est aussi une référence arrière.

rg = re.compile(r'(?:(?i)<(h\d|p)>(.*?)(</\1>))', re.S)

La regexp rg1 matche les balises <br />.

rg1 = re.compile('<br.*>')

La regexp rg2 matche toutes les balises html, sans exception, au cas où on en aurait besoin.

Elle a été mise en commentaire.

#rg2 = re.compile('<[^>]*>')

La regexp rg3 match tous les sauts de lignes, au cas où.

rg3 = re.compile(r'^\r\n', re.M)

Ensuite, viennent les rg.sub, rg1.sub, etc., qui vont exécuter les remplacements...

Teste et dis-moi si c'est bien ce que tu voulais...

Merci à toi.

Bien amicalement,
Abdel.


Le 05/04/2017 à 22:20, Jean-François Colas a écrit :
Hello la ML,

Je me souviens bien d'un message qui me nargue, et qui parle de Pandoc pour dé-html-iser simplement un document... Je ne suis pas certain malgré tout que ce soit tout à fait ce dont j'aurais besoin. Il me faudrait quelque chose capable de traiter tout, OU PARTIE, d'un document.

Existerait-il alors peut-être quelque chose en Python qui pourrait me permettre d'envisager la récupération du contenu des balises, tout en me débarrassant des balises elles-mêmes, afin de faire un dé-html-iseur sans prétention, hormis celle de se glisser dans des utilitaires personnels pour 6Pad? Si malgré tout je pouvais discriminer certaines balises, pour autant que j'y songe rapidement, <br> ou <p> ou peut-être les <h1> à <h6>, mais pas énormément au-delà.

Merci,
J.-F.


Progliste :
Pour se d�sinscrire de la liste : mailto:[email protected]?subject=unsubscribe

Pour voir les archives de la liste :
http://www.mail-archive.com/[email protected]/

Je vous rappelle que les pi�ces jointe sont activ�s leur taille est limit� � 2 MO
Pour acc�der aux fichiers de la liste
http://outils.archive-host.com/partage.php?id=2Qar9Hy6ftzr
Ou en utilisant la nouvelle page de partage :
http://outils-n.archive-host.com/partage-fm0m7b947vglikp9Efpso94gt
Pour y ajouter des fichiers demandez-moi le ou sur la liste ou en priv�, je vous r�pondrez en priv�.




import sixpad as sp # importation du module sixpad.

def filterHTML():
        """Fonction permettant de filtrer le code html selon les besoins."""
        text = sp.window.curPage.text # On sauvegarde le texte du fichier html 
courant.
        path=sp.window.curPage.file # on stocke son chemin.
        name = sp.window.curPage.name # On stocke son nom.
        ext = name.split(".")[1] # On stocke son extension.
        newPath = path.replace(name, "filterHtml." + ext) # On crée le chemin 
de la page qui sera sauvegardée plus tard avec les chantements.
        import re # Importation du module re.
        # La regexp compilée plus bas, permet de matcher les balises p et de h1 
jusqu'à h6.
        # Elle peut être modifier selon les besoins pour intégrer d'autres 
balises à supprimer.
        rg = re.compile(r'(?:(?i)<(h\d|p)>(.*?)(</\1>))', re.S)
        # Pour supprimer uniquement les balises <br/>, utiliser la regexp 
suivante.
        rg1 = re.compile('<br.*>')
        # Pour supprimer toutes les balises html, utiliser la regexp suivante 
qui est mise en commentaire.
        #rg2 = re.compile('<[^>]*>')
        # Pour supprimer les lignes vides.
        rg3 = re.compile(r'^\r\n', re.M)
        # On crée la nouvelle page qui contiendra le code modifié.
        f = open(newPath, "w+")
                # On referme le fichier.
        f.close()
        # On ouvre cette nouvelle page.
        sp.window.open(newPath)
        # On remplace le texte en supprimant les balises matchées par la regxp 
rg.
        sp.window.curPage.text = rg.sub(r'\2', text)
        # On supprime maintenant les balises <br en utilisant la regexp rg1.
        text = sp.window.curPage.text
        sp.window.curPage.text = rg1.sub('', text)
        # On supprime les lignes vides
        text = sp.window.curPage.text
        sp.window.curPage.text = rg3.sub('', text)

sp.window.addAccelerator("CTRL+F10", filterHTML)

Répondre à