在replaceWith()不起作用后使用find()(使用BeautifulSoup)

tho*_*mas 6 python beautifulsoup find

请考虑以下python会话:

>>> from BeautifulSoup import BeautifulSoup
>>> s = BeautifulSoup("<p>This <i>is</i> a <i>test</i>.</p>"); myi = s.find("i")
>>> myi.replaceWith(BeautifulSoup("was"))
>>> s.find("i")
>>> s = BeautifulSoup("<p>This <i>is</i> a <i>test</i>.</p>"); myi = s.find("i")
>>> myi.replaceWith("was")
>>> s.find("i")
<i>test</i>
Run Code Online (Sandbox Code Playgroud)

请注意第4行后s.find("i")的缺失输出!

这是什么原因?有解决方法吗?

编辑:实际上,该示例未演示usecase,它是:

myi.replaceWith(BeautifulSoup("wa<b>s</b>"))
Run Code Online (Sandbox Code Playgroud)

每当插入的部分包含非常重要的html代码时,我都不会看到如何用其他东西替换这种语法.只是拥有

myi.replaceWith("wa<b>s</b>")
Run Code Online (Sandbox Code Playgroud)

将替换实体的html特殊字符.

Ste*_*e K 5

更简单的答案:致电后replaceWith,s通过呼叫重新生成和清理s = BeautifulSoup(s.renderContents()).然后你可以find再次.