Использование анализатора HTML намного надежнее, чем использование регулярных выражений. Регулярное выражение не должно использоваться для анализа вложенных структур, таких как HTML.
Вот рабочая реализация, которая перебирает все теги HTML, а для тех, кто не является p
или br
, удаляет их из тега:
from bs4 import BeautifulSoup
mystring = 'aaa<p>Radio and<BR> television.<br></p><p>very<br/> popular in the world today.</p><p>Millions of people watch TV. </p><p>That’s because a radio is very small <span_style=":_black;">98.2%</span></p><p>and it‘s easy to carry. <span_style=":_black;">haha100%</span></p>bb'
soup = BeautifulSoup(mystring,'html.parser')
for e in soup.find_all():
if e.name not in ['p','br']:
e.unwrap()
print(soup)
Выход:
aaa<p>Radio and<br/> television.<br/></p><p>very<br> popular in the world today.</br></p><p>Millions of people watch TV. </p><p>That’s because a radio is very small 98.2%</p><p>and it‘s easy to carry. haha100%</p>bb