У меня есть HTML-файл, который содержит только теги <p>
и <a>
. Как ниже -
<p>For a country that takes pride in the venerable stability of its democracy, Britain is strangely prone to constitutional improvisations. For example, if the current <a href="https://www.theguardian.com/politics/conservative-leadership" title="">Conservative party leadership contest</a> proceeds as far as a ballot of party members, it will be the first time a prime minister is chosen by that method.</p> <p>In 2016, Theresa May’s<a href="https://www.theguardian.com/politics/2016/jun/30/conservative-leadership-race-who-are-the-five-candidates" title=""> rivals withdrew before the final round</a>. In previous applications of the rules it was the leader of the opposition being chosen, not a head of government. The system itself only dates back to 1998. Fine-tuning of the rules was completed by the 1922 Committee just three weeks ago. The process looks undemocratic and has no basis in ancient precedent.</p>
Что мне нужно сделать, так это извлечь предложения с определенными свойствами, например: предложения, содержащие Britain
или party
. А затем пометьте все предложение тегами <mark>
, сохранив форматирование абзаца таким, как оно есть.
Для этого -
- Сначала я удалил все теги, чтобы получить только чистые абзацы с чистыми предложениями.
- Тогда я использовал Пространство , чтобы извлечь предложения
with open('a.html') as f:
given_text = f.read() # Read from the file
#given_text = '' #copy paste the above html as string
nlp = spacy.load('en')
doc = nlp(given_text)
- Наконец, я перебираю предложения, используя
for sent in doc.sents
, и использую регулярное выражение, чтобы узнать, должно ли предложение быть помечено или нет.
Но проблема этого подхода заключается в том, что, как только я санирую текст (удаляя все теги <p>
и <a>
), я теряю все учетные записи отдельных абзацев. Поэтому, помечая предложения тегом, я получаю одну огромную строку.
Как сохранить форматирование <p>
, но при этом можно перебирать предложения, чтобы пометить их?
Идея состоит в том, чтобы выводить точно так, как мы получили, за исключением нескольких выделенных предложений.