Заменить или удалить тег HTML и контент Python Regex - PullRequest
0 голосов
/ 12 апреля 2019

Я хочу удалить HTML открыть и закрыть и содержимое между двумя тегами с регулярными выражениями. Как мне удалить тег <head> в следующей строке.

my_string = '''
<html>
    <head>
        <p>
        this is a paragraph tag
        </p>
    </head>
    <meta>
        <p>
        this is a different paragraph tag
        </p>
    </meta>
</html>
'''

Чтобы это выглядело так:

my_string = '''
<html>
    <meta>
        <p>
        this is a different paragraph tag
        </p>
    </meta>
</html>
'''

1 Ответ

2 голосов
/ 12 апреля 2019

Вы можете удалить тег head из текста HTML, используя Beautiful Soup в Python, используя функцию decompose().Попробуйте этот код Python,

from bs4 import BeautifulSoup

my_string = '''
<html>
    <head>
        <p>
        this is a paragraph tag
        </p>
    </head>
    <meta>
        <p>
        this is a different paragraph tag
        </p>
    </meta>
</html>
'''

soup = BeautifulSoup(my_string)
soup.find('head').decompose()  # find head tag and decompose/destroy it from the html
print(soup)                    # prints html text without head tag

Prints,

<html>

<meta/>
<p>
        this is a different paragraph tag
        </p>
</html>

Кроме того, хотя метод регулярных выражений не рекомендуется, но если тег, который вы хотите удалить, не является вложенным, вы можете удалитьэто с помощью регулярного выражения, которое вы упомянули в ваших комментариях, используя эти коды Python.Но всегда избегайте использования регулярных выражений для синтаксического анализа вложенных структур и используйте правильный синтаксический анализатор.

import re

my_string = '''
<html>
    <head>
        <p>
        this is a paragraph tag
        </p>
    </head>
    <meta>
        <p>
        this is a different paragraph tag
        </p>
    </meta>
</html>
'''

print(re.sub(r'(?s)<head>.*?</head>', '', my_string))

Печатает после и замечает использование (?s), которое необходимо для включения новой строки, совмещающей точки, когда ваш html распространяется по несколькимлинии,

<html>

    <meta>
        <p>
        this is a different paragraph tag
        </p>
    </meta>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...