给定值为bs4.BeautifulSoup("<tr><td>Hello!</td><td>World!</td></tr>")
的对象soup
,如何从所有tr
标记中删除感叹号?你知道吗
最接近的是:
for tr in soup.find_all("tr"):
tr.string = tr.decode_contents().replace("!", "")
但这会导致:
<html><body><tr><td>Hello</td><td>World</td></tr></body></html>
其中,decode_contents()
中的尖括号在分配给tr.string
时进行编码。你知道吗
我还尝试了tr.replace_with(str(tr).replace("!", ""))
(使用Tag
对象的HTML表示),得到了相同的结果。你知道吗
请记住,这是一个简化的示例。虽然我可以在这个特定的例子中迭代td
标记,但实际上那些标记也包含HTML结构,这就带来了同样的问题。你知道吗
您可以尝试遍历作为
<tr>
子对象的所有字符串对象。你知道吗一个问题是,如果不中断迭代器,就无法替换
.strings
返回的字符串,这就是为什么我首先将其作为列表。如果这是一个问题,您可以在替换下一个元素之前以保留该元素的方式进行迭代,如下所示:执行了以下操作:
似乎
replace_with
不适用于HTML字符串,因此应该首先创建一个BeautifulSoup
对象,并将其用作replace_with
的参数相关问题 更多 >
编程相关推荐