Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Nettoyage d'un fichier html

23 réponses
Avatar
Escargot
Bonjour,

J'ai convertis un fichier tableur (LibreOffice Calc) en html pour
pouvoir le lire directement avec un navigateur Web.

Ce fichier a dans ses balises des "propriétés" propres à LibreOffice :

sdnum=" [du texte] "
sdval=" [une valeur] "

Comment faire avec Emacs pour enlever toutes ces "propriétés" et rendre
ainsi le fichier html plus léger ?

Le problème (pour moi) est que le texte ou la valeur indiqués entre
guillements ne sont pas toujours les mêmes.

Merci pour vos réponses.

J.

10 réponses

1 2 3
Avatar
Lucas Levrel
Le 21 octobre 2015, S?bastien Kirche a écrit :

Je dirais :
- C-h i pour aller dans Info
- m emacs RET pour ouvrir la partie de la doc d'Emacs
- s backslash RET pour rechercher le noeud
ou m regexp backslash RET si on connait déjà la section recherchée



Merci. Je connais un tout petit peu info pour l'avoir lancé quelques
fois dans un terminal, mais je ne connaissais pas la commande m ; je vois
qu'elle est donnée sur la page d'accueil d'info (que je n'avais jamais vue
auparavant, ayant toujours invoqué info <truc>).

--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Avatar
Lucas Levrel
Le 21 octobre 2015, Jean-Jacques Rétorré a écrit :
Évaluer dans n'importe quel buffer (ou par M-: )
(info "(emacs)Backslash in Regular Expressions")

Pour parcourir le info de Emacs
(info "(emacs)") ou encore M-x info-emacs-manual

Pour apprendre à utiliser (info), évaluer
(info "(info)")



OK. Malheureusement je ne parle pas Lisp :-)
(ces commandes sont faciles à lire, mais les mémoriser et savoir les
écrire quand on ignore le langage est déjà plus coton)

Pour parcourir les fichiers info :
M-x info RET ou C-h i



Merci.

--
LL
Ἕν οἶδα ὅτι οὐδὲν οἶδα (Σωκράτης)
Avatar
Jean-Jacques Rétorré
jeu. 22 oct. 2015, Lucas Levrel nous disait que :

Le 21 octobre 2015, Jean-Jacques Rétorré a écrit :
Évaluer dans n'importe quel buffer (ou par M-: )
(info "(emacs)Backslash in Regular Expressions")

Pour parcourir le info de Emacs
(info "(emacs)") ou encore M-x info-emacs-manual

Pour apprendre à utiliser (info), évaluer
(info "(info)")



OK. Malheureusement je ne parle pas Lisp :-)
(ces commandes sont faciles à lire, mais les mémoriser et savoi r les
écrire quand on ignore le langage est déjà plus coton)




Pour évaluer une expression Elisp il suffit de placer le point aprà ¨s la
parenthèse fermante et de taper C-x C-e. Pas besoin de connaître elisp
pour ça.

Lisp est un langage particulièrement facile à apprendre, il n'y a
pratiquement pas de syntaxe. C'est toujours (<fonction> <argument> ...).
En plus, les fonctions sont auto-documentées. Il suffit de placer le
point sur le nom de la fonction, puis C-h f (ou F1-f sur PC) pour savoir
ce que fait la fonction, et éventuellement accéder à son cod e elisp.


Pour parcourir les fichiers info :
M-x info RET ou C-h i



Merci.



--
JJ R.
Avatar
duthen.mac.01
Le mardi 20 octobre 2015 00:27:46 UTC+2, Sébastien Kirche a écrit :
Le 19 octobre 2015 à 22:31, Jean-Jacques Rétorré vraute :

> > M-x query-replace-regexp RET
> >
> > motif à rechercher: (sdnum|sdval)=".*"
> > à remplacer par "" (chaine vide)
>
> Je crains que ça ne marche pas si la chaîne à virer est sur plusi eurs
> lignes.

Effectivement, je n'avait pas testé/pensé ce cas en absence de fichie r
d'exemple.

--
Sébastien Kirche



Attention! Il y a un autre cas!

S'il y a plusieurs propriétés sur la même ligne, comme:

sdnum="v1" p2="v2"

et qu'on veut supprimer sdnum mais pas p2,
il ne faut PAS utiliser (sdnum|sdval)=".*" qui "matche" toute la ligne ,
mais plutôt la regex proposée par JJ Rétorré:
b(sdnum|sdval)="[^"]*"
éventuellement prolongée par une suite d'espaces

S'il y a un cas comme sdnum="valeur entre "guillemets""
ça risque d'être encore plus coton...
Avatar
Jean-Jacques Rétorré
ven. 23 oct. 2015, nous disait que :

Le mardi 20 octobre 2015 00:27:46 UTC+2, Sébastien Kirche a écr it :
Le 19 octobre 2015 à 22:31, Jean-Jacques Rétorré vraute :

> > M-x query-replace-regexp RET
> >
> > motif à rechercher: (sdnum|sdval)=".*"
> > à remplacer par "" (chaine vide)
>
> Je crains que ça ne marche pas si la chaîne à virer est sur plusieurs
> lignes.

Effectivement, je n'avait pas testé/pensé ce cas en absence de fichier
d'exemple.

--
Sébastien Kirche



Attention! Il y a un autre cas!

S'il y a plusieurs propriétés sur la même ligne, comme:

sdnum="v1" p2="v2"

et qu'on veut supprimer sdnum mais pas p2,
il ne faut PAS utiliser (sdnum|sdval)=".*" qui "matche" toute la lig ne,
mais plutôt la regex proposée par JJ Rétorré:
b(sdnum|sdval)="[^"]*"
éventuellement prolongée par une suite d'espaces

S'il y a un cas comme sdnum="valeur entre "guillemets""
ça risque d'être encore plus coton...



J'avais appris ici l'usage de cette regexp pour remplacer les "..." par
«...» dans un texte. Que mon tuteur soit remercié.

Un bon moyen de tester une regexp est d'utiliser re-builder sur un
fichier choisi à cet effet.


--
JJ R.
Avatar
Paul Gaborit
À (at) Fri, 23 Oct 2015 02:48:13 -0700 (PDT),
écrivait (wrote):

S'il y a un cas comme sdnum="valeur entre "guillemets""
ça risque d'être encore plus coton...



Ce n'est pas possible. Dans un attribut HTML/XML, le caractère '"' doit
être encodé sous la forme '&quot;'.

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
Pascal J. Bourguignon
Paul Gaborit writes:

À (at) Fri, 23 Oct 2015 02:48:13 -0700 (PDT),
écrivait (wrote):

S'il y a un cas comme sdnum="valeur entre "guillemets""
ça risque d'être encore plus coton...



Ce n'est pas possible. Dans un attribut HTML/XML, le caractère '"' doit
être encodé sous la forme '&quot;'.



En théorie. Mais en pratique, le nombre de page web qu'on peut trouver
qui sont mal encodées…
--
__Pascal Bourguignon__ http://www.informatimago.com/
“The factory of the future will have only two employees, a man and a
dog. The man will be there to feed the dog. The dog will be there to
keep the man from touching the equipment.” -- Carl Bass CEO Autodesk
Avatar
Paul Gaborit
À (at) Fri, 23 Oct 2015 20:08:45 +0200,
"Pascal J. Bourguignon" écrivait (wrote):

Paul Gaborit writes:

À (at) Fri, 23 Oct 2015 02:48:13 -0700 (PDT),
écrivait (wrote):

S'il y a un cas comme sdnum="valeur entre "guillemets""
ça risque d'être encore plus coton...



Ce n'est pas possible. Dans un attribut HTML/XML, le caractère '"' doit
être encodé sous la forme '&quot;'.



En théorie. Mais en pratique, le nombre de page web qu'on peut trouver
qui sont mal encodées…



Ok pour accepter des attributs mal encodés mais quelle est la règle pour
les interpéter ?

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
Paul Gaborit
À (at) Sat, 24 Oct 2015 00:31:40 +0200,
Paul Gaborit écrivait (wrote):

À (at) Fri, 23 Oct 2015 20:08:45 +0200,
"Pascal J. Bourguignon" écrivait (wrote):

Paul Gaborit writes:

À (at) Fri, 23 Oct 2015 02:48:13 -0700 (PDT),
écrivait (wrote):

S'il y a un cas comme sdnum="valeur entre "guillemets""
ça risque d'être encore plus coton...



Ce n'est pas possible. Dans un attribut HTML/XML, le caractère '"' doit
être encodé sous la forme '&quot;'.



En théorie. Mais en pratique, le nombre de page web qu'on peut trouver
qui sont mal encodées…



Ok pour accepter des attributs mal encodés mais quelle est la règle pour
les interpéter ?


~~~~~~~~~~

"interpréter" évidemment ! ;-)

--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Avatar
Sébastien Kirche
Le 23 octobre 2015 à 13:57, Jean-Jacques Rétorré vraute :

Un bon moyen de tester une regexp est d'utiliser re-builder sur un
fichier choisi à cet effet.



J'ai prototypé avec re-builder, mais c'est bien connu : le programmeur
teste toujours les cas qu'_il_ a prévu :o)

--
Sébastien Kirche
1 2 3