BeautifulSoup: Вычеркнуть указанные атрибуты, но сохранить тег и его содержимое

Я пытаюсь 'defrontpagify' html сгенерированного MS FrontPage веб-сайта, и я пишу скрипт BeautifulSoup, чтобы сделать это.

Однако я застрял на той части, где я пытаюсь удалить определенный атрибут (или список атрибутов) из каждого тега в документе, который их содержит. Фрагмент кода:

REMOVE_ATTRIBUTES = ['lang','language','onmouseover','onmouseout','script','style','font',
                        'dir','face','size','color','style','class','width','height','hspace',
                        'border','valign','align','background','bgcolor','text','link','vlink',
                        'alink','cellpadding','cellspacing']

# remove all attributes in REMOVE_ATTRIBUTES from all tags, 
# but preserve the tag and its content. 
for attribute in REMOVE_ATTRIBUTES:
    for tag in soup.findAll(attribute=True):
        del(tag[attribute])

Он выполняется без ошибок, но на самом деле не удаляет ни один из атрибутов. Когда я запускаю его без внешнего цикла, просто жестко кодируя один атрибут (soup.findAll('style'=True)), он работает.

Кто-нибудь знает, в чем тут проблема?

PS - мне тоже не очень нравятся вложенные циклы. Если кто-то знает более функциональный, похожий на карту/фильтр стиль, я был бы рад увидеть его.

7
задан Kurtosis 28 January 2012 в 09:03
поделиться