Рассмотрим следующий HTML:
<div>
Some foo text foo
<p> text inside paragraph foo and also foo and <b> nested foo</b> and foo </p>
foo is also here and can occur many times foo foo
<p> here <a>foo</a> already appears inside a link so it is not changed</p>
foo, yeah!
</div>
Мне нужно обернуть все вхождения 'foo' в интерактивную ссылку (элемент <a>
), кроме случаев, которые уже находятся внутри <a>
, поэтомуожидаемый результат:
<div>
Some <a>foo</a> text <a>foo</a>
<p> text inside paragraph <a>foo</a> and also <a>foo</a> and <b> nested <a>foo</a></b> and <a>foo</a> </p>
<a>foo</a> is also here and can occur many times <a>foo</a> <a>foo</a>
<p> here <a> foo </a> appears inside a link so it is not changed</p>
<a>foo</a>, yeah!
</div>
Есть ли простой способ сделать это с помощью lxml?Первоначально замена необработанной подстроки имела для меня больше смысла, но есть требование, что некоторые вхождения нельзя изменять, если они находятся внутри определенных элементов HTML.