Cómo eliminar los espacios en blanco en BeautifulSoup

Tengo un montón de HTML que estoy analizando con BeautifulSoup y ha ido bastante bien, excepto por un pequeño inconveniente. Quiero guardar la salida en una cadena de una sola línea, con lo siguiente como mi salida actual:

  • Zazzafooky but one two three!
  • Zazzafooky2
  • Zazzafooky3
  • Idealmente me gustaria

     
  • Zazzafooky but one two three!
  • Zazzafooky2
  • Hay un montón de espacios en blanco redundantes de los que me gustaría deshacerme, pero no es necesariamente removible con strip() , ni puedo eliminar todos los espacios descaradamente porque necesito conservar el texto. ¿Cómo puedo hacerlo? Parece un problema lo suficientemente común como para que las expresiones regulares sean excesivas, pero ¿es esa la única manera?

    No tengo ninguna etiqueta

     por lo que puedo ser un poco más fuerte allí. 

    ¡Gracias una vez más!

    Aquí es cómo puedes hacerlo sin expresiones regulares:

     >>> html = """ 
  • ... Zazzafooky but one two three! ...
  • ...
  • ... Zazzafooky2 ...
  • ...
  • ... Zazzafooky3 ...
  • ... """ >>> html = "".join(line.strip() for line in html.split("\n")) >>> html '
  • Zazzafooky but one two three!
  • Zazzafooky2
  • Zazzafooky3
  • '

    Pregunta antigua, lo sé, pero beautifulsoup4 tiene este ayudante llamado stripped_strings.

    Prueba esto:

     description_el = about.find('p', { "class": "description" }) descriptions = list(description_el.stripped_strings) description = "\n\n".join(descriptions) if descriptions else "" 
     re.sub(r'[\ \n]{2,}', '', yourstring) 

    Regex [\ \n]{2} coincidir las líneas nuevas y los espacios (debe escaparse) cuando hay más de dos o más de ellos. La implementación más completa es esta:

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

    Pensaría que el primero solo reemplazaría varias líneas nuevas, pero parece (al menos para mí) funcionar bien.