Le contraire peut être réalisée à l'aide pyparsing comme suit:texte sauf bande du contenu d'une balise
from pyparsing import Suppress, replaceWith, makeHTMLTags, SkipTo
#...
removeText = replaceWith("")
scriptOpen, scriptClose = makeHTMLTags("script")
scriptBody = scriptOpen + SkipTo(scriptClose) + scriptClose
scriptBody.setParseAction(removeText)
data = (scriptBody).transformString(data)
Comment pourrais-je garder le contenu de la balise "table"
?
MISE À JOUR 0:
J'ai essayé: # garder uniquement les tables tableOpen, tableClose = makeHTMLTags ("table") tableBody = tableOpen + skipTo (tableClose) + tableClose f = replaceWith (tableBody) tableBody.setParseAction (f) data = (tableBody) .transformString (données) de données d'impression
et je reçois quelque chose comme ça ...
garbages
<input type="hidden" name="cassstx" value="en_US:frontend"></form></td></tr></table></span></td></tr></table>
{<"table"> SkipTo:(</"table">) </"table">}
<div id="asbnav" style="padding-bottom: 10px;">{<"table"> SkipTo:(</"table">) </"table">}
</div>
even more garbages
MISE À JOUR 2:
Merci Martelli. Ce que j'ai besoin est:
from pyparsing import Suppress, replaceWith, makeHTMLTags, SkipTo
#...
data = 'before<script>ciao<table>buh</table>bye</script>after'
tableOpen, tableClose = makeHTMLTags("table")
tableBody = tableOpen + SkipTo(tableClose) + tableClose
thetable = (tableBody).searchString(data)[0][2]
print thetable
Le problème est que je ne sais pas comment obtenir la chaîne 'thetable'. –
@myle, voir ma modification avec un exemple. Ouais, les docs 'pyparsing' sont vraiment rares (sauf peut-être que vous êtes prêt à payer pour le livre O'Reilly je suppose) - seul défaut sérieux de ce paquet soigné! –