Замена тега HTML с использованием регулярных выражений и python

У меня есть скрипт Python, который будет просматривать HTML-файл следующего формата:

<DOC>
<HTML>
...
</HTML>
</DOC>
<DOC>
<HTML>
...
</HTML>
</DOC>

Как удалить все теги HTML (заменить теги на ''), за исключением открывающих и закрывающих тегов DOC с использованием регулярных выражений в Python? Кроме того, если я хочу сохранить альтернативный текст тега, как должно выглядеть регулярное выражение?


person GobiasKoffi    schedule 27.09.2009    source источник
comment
Вы должны использовать анализатор DOM, а не регулярное выражение. См. docs.python.org/library/xml.dom.html.   -  person meder omuraliev    schedule 28.09.2009
comment
А можно поподробнее, что вы хотите удалить?   -  person meder omuraliev    schedule 28.09.2009
comment
Я хочу удалить все теги, кроме тегов ‹DOC› и ‹/DOC›.   -  person GobiasKoffi    schedule 28.09.2009
comment
Является ли «html» гипотетическим именем элемента, а не «html»?   -  person meder omuraliev    schedule 28.09.2009


Ответы (3)


найдите и замените этим регулярным выражением: ищите: ‹.*?> замените на: "

person ennuikiller    schedule 27.09.2009

Для того, чего вы пытаетесь достичь, я бы использовал BeautifulSoup, а не регулярное выражение.

http://www.crummy.com/software/BeautifulSoup/

person John La Rooy    schedule 28.09.2009

Попробуйте lxml, очень хорошую библиотеку Python для работы с xml. Вы можете использовать drop_tag для выполнения того, что вы ищете.

from lxml import html 
h = html.fragment_fromstring('<doc>Hello <b>World!</b></doc>')
h.find('*').drop_tag()
print(html.tostring(h, encoding=unicode))

<doc>Hello World!</doc>
person moorej    schedule 28.09.2009