使用 BeautifulSoup 的简单标签替换

Simple tag replacement with BeautifulSoup

我有一个 非常 简单的标签替换问题,我试图用 BeatifulSoup 的 replace_with 方法解决,但我无法理解这是怎么回事工作。我有字符串 '<b>This is text</b>',我想简单地将其转换为 '<bold>This is text</bold>'。似乎 bs4 的 replace_with 命令应该能够做到这一点,但它并没有像我期望的那样工作。我试过(在其他一些变体中)这样的事情:

>>> a = '<b>This is text</b>'
>>> soup = BeautifulSoup(a, 'html.parser')
>>> new_tag = soup.new_tag('bold')
>>> soup.b.replace_with(new_tag)
<b>This is text</b>
>>> soup
<bold></bold>

如您所见,标签已被替换,但随后我丢失了文本。我可以用字符串替换来做这种事情,但我真的很想知道为什么这不起作用,因为我倾向于 运行 进入与 bs4 类似的问题和其他方法,我必须误解这里的一些基本知识。

使用 .replace_with 时,您将用新标签替换整个标签 - 而新标签没有任何内容(文本)。改为尝试:

a = "<b>This is text</b>"
soup = BeautifulSoup(a, "html.parser")

soup.b.name = "bold"

print(soup)

打印:

<bold>This is text</bold>