Удаление тегов HTML из строки Unicode в Python - PullRequest
2 голосов
/ 11 июля 2010

У меня есть сильная сторона, которую я удалил из файла XML, и он содержит некоторые теги форматирования HTML

(<b>, <i>, etc)

Существует ли быстрый и простой способ удалить все эти теги из текста?

Я попытался

str = str.replace("<b>","")

и применил его несколько раз к другим тегам, но это не работает

Ответы [ 3 ]

5 голосов
/ 11 июля 2010

Использование lxml.html:

lxml.html.fromstring(s).text_content()

Удаляет все теги и преобразует все объекты в соответствующие им символы.

1 голос
/ 12 июля 2010

Вот как использовать модуль BeautifulSoup для замены только некоторых тегов, оставляя только HTML-код одним:

from BeautifulSoup import BeautifulSoup, NavigableString

def strip_tags(html, invalid_tags):
  soup = BeautifulSoup(html)
  for tag in soup.findAll(True):
    if tag.name in invalid_tags:
      s = ""
      for c in tag.contents:
        if type(c) != NavigableString:
          c = strip_tags(unicode(c), invalid_tags)
        s += unicode(c)
      tag.replaceWith(s)
  return soup

html = "<p>Good, <b>bad</b>, and <i>ug<b>l</b><u>y</u></i></p>"
invalid_tags = ['b', 'i', 'u']
print strip_tags(html, invalid_tags)

Результат:

<p>Good, bad, and ugly</p>
1 голос
/ 11 июля 2010

Ответ зависит от ваших конкретных потребностей. Вы могли бы взглянуть на регулярные выражения. Но я бы посоветовал вам использовать http://www.crummy.com/software/BeautifulSoup/, если вы хотите очистить плохой XML или HTML.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...