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)