10
votes

Comment supprimer WhitSpace dans Beautifulsoup

J'ai un tas de HTML, je suis analytique avec Beaudsoup et ça va très bien sauf un sprock mineur. Je souhaite enregistrer la sortie dans une chaîne à une seule lignée, avec la sortie suivante comme sortie actuelle: xxx pré>

idéalement, j'aimerais P>

<li><span class="plaincharacterwrap break">Zazzafooky but one two three!</span></li><li><span class="plaincharacterwrap break">Zazzafooky2</span></li>


2 commentaires

Comment imprimez-vous votre sortie?


Vous pouvez faire ce que font les navigateurs: réduisez tous les espaces adjacents (dans le texte) dans des espaces.


4 Réponses :


2
votes
re.sub('\ {2,}', '', yourstring)
re.sub('\n*', '', yourstring)

0 commentaires

17
votes

Voici comment vous pouvez le faire sans expressions régulières:

>>> html = """    <li><span class="plaincharacterwrap break">
...                     Zazzafooky but one two three!
...                 </span></li>
... <li><span class="plaincharacterwrap break">
...                     Zazzafooky2
...                 </span></li>
... <li><span class="plaincharacterwrap break">
...                     Zazzafooky3
...                 </span></li>
... """
>>> html = "".join(line.strip() for line in html.split("\n"))
>>> html
'<li><span class="plaincharacterwrap break">Zazzafooky but one two three!</span></li><li><span class="plaincharacterwrap break">Zazzafooky2</span></li><li><span class="plaincharacterwrap break">Zazzafooky3</span></li>'


0 commentaires

16
votes

Old Question, je sais, mais BelleSoup4 a cet assistant appelé Stripped_strings.

Essayez ceci: p>

description_el = about.find('p', { "class": "description" })
descriptions = list(description_el.stripped_strings)
description = "\n\n".join(descriptions) if descriptions else ""


0 commentaires

1
votes

Si vous êtes venu ici après avoir été troublé par Beautiful Plettifier (). Je pense que cette solution n'ajoutera pas d'espaces supplémentaires.

from xml.etree import ElementTree as ET
tree = ET.parse('out.html')
title = tree.find(".//title").text
print(title)


0 commentaires