使用 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>
我有一个 非常 简单的标签替换问题,我试图用 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>