Wie kann ich mich in Pausen einblenden?

Lassen Sie uns sagen, ich habe ein HTML mit <p> und <br> Tags im Inneren. Amitwards, ich werde das HTML streifen, um die Tags aufzuräumen. Wie kann ich sie in Zeilenumbrüche verwandeln?

Ich benutze Pythons BeautifulSoup- Bibliothek, wenn das überhaupt hilft.

  • Warum verwendet python sowohl Referenzzählung als auch Mark-and-Sweep für gc?
  • Verständnis Tensorflow LSTM Eingabeform
  • Pandas + dataframe - durch partielle Zeichenfolge auswählen
  • Empfange Antworten von Gmail mit smtplib - Python
  • Python: Druck horizontal, statt aktueller Standarddruck
  • Ein DSL in Python für die tabellarische Analyse und Verarbeitung?
  • 4 Solutions collect form web for “Wie kann ich mich in Pausen einblenden?”

    Ohne irgendwelche Besonderheiten ist es schwer, sicher zu sein, dass das genau das macht, was du willst, aber das soll dir die Idee geben … es geht davon aus, dass deine b-Tags in p-Elementen eingehüllt sind.

     from BeautifulSoup import BeautifulSoup import types def replace_with_newlines(element): text = '' for elem in element.recursiveChildGenerator(): if isinstance(elem, types.StringTypes): text += elem.strip() elif elem.name == 'br': text += '\n' return text page = """<html> <body> <p>America,<br> Now is the<br>time for all good men to come to the aid<br>of their country.</p> <p>pile on taxpayer debt<br></p> <p>Now is the<br>time for all good men to come to the aid<br>of their country.</p> </body> </html> """ soup = BeautifulSoup(page) lines = soup.find("body") for line in lines.findAll('p'): line = replace_with_newlines(line) print line 

    Dies führt zu …

     (py26_default)[mpenning@Bucksnort ~]$ python thing.py America, Now is the time for all good men to come to the aid of their country. pile on taxpayer debt Now is the time for all good men to come to the aid of their country. (py26_default)[mpenning@Bucksnort ~]$ 

    get_text scheint zu tun was du brauchst

     >>> from bs4 import BeautifulSoup >>> doc = "<p>This is a paragraph.</p><p>This is another paragraph.</p>" >>> soup = BeautifulSoup(doc) >>> soup.get_text(separator="\n") u'This is a paragraph.\nThis is another paragraph.' 

    Dies ist eine python3-Version von @Mike Penningtons Antwort (es hilft wirklich), ich habe einen Wurf-Refactor gemacht.

     def replace_with_newlines(element): text = '' for elem in element.recursiveChildGenerator(): if isinstance(elem, str): text += elem.strip() elif elem.name == 'br': text += '\n' return text def get_plain_text(soup): plain_text = '' lines = soup.find("body") for line in lines.findAll('p'): line = replace_with_newlines(line) plain_text+=line return plain_text 

    Um dies zu benutzen, passiere einfach das Beautifulsoup-Objekt zu get_plain_text methond.

     soup = BeautifulSoup(page) plain_text = get_plain_text(soup) 

    Ich bin nicht ganz sicher, was du versuchst zu erreichen, aber wenn du nur versuchst, die HTML-Elemente zu entfernen, würde ich einfach ein Programm wie Notepad2 verwenden und die Funktion Replace All verwenden – ich denke, du kannst auch eine neue Zeile einfügen Mit ersetzen alle auch. Stellen Sie sicher, dass Sie das <p> -Element ersetzen, dass Sie auch das Schließen entfernen ( </p> ). Zusätzlich nur ein FYI das richtige HTML5 ist <br /> anstatt <br> aber es spielt keine Rolle. Python wäre nicht meine erste Wahl für diese so ist es ein wenig aus meinem Bereich des Wissens, sorry konnte ich nicht mehr helfen.

    Python ist die beste Programmiersprache der Welt.