作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想用另一个标签替换一个标签,并将旧标签的内容放在新标签之前。例如:
我想改变这个:
<html>
<body>
<p>This is the <span id="1">first</span> paragraph</p>
<p>This is the <span id="2">second</span> paragraph</p>
</body>
</html>
进入这个:
<html>
<body>
<p>This is the first<sup>1</sup> paragraph</p>
<p>This is the second<sup>2</sup> paragraph</p>
</body>
</html>
我可以使用 find_all()
轻松找到所有 spans
,从 id 属性中获取数字并使用 replace_with()< 将一个标签替换为另一个标签
,但如何用文本 和 替换标签或在替换标签前插入文本?
最佳答案
想法是找到每个带有 id
属性的 span
标签 (span[id]
CSS Selector ),使用 insert_after()
在它和 unwrap()
之后插入一个 sup
标签用它的内容替换标签:
from bs4 import BeautifulSoup
data = """
<html>
<body>
<p>This is the <span id="1">first</span> paragraph</p>
<p>This is the <span id="2">second</span> paragraph</p>
</body>
</html>
"""
soup = BeautifulSoup(data)
for span in soup.select('span[id]'):
# insert sup tag after the span
sup = soup.new_tag('sup')
sup.string = span['id']
span.insert_after(sup)
# replace the span tag with it's contents
span.unwrap()
print soup
打印:
<html>
<body>
<p>This is the first<sup>1</sup> paragraph</p>
<p>This is the second<sup>2</sup> paragraph</p>
</body>
</html>
关于python - BeautifulSoup 4 : How to replace a tag with text and another tag?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27006463/
我是一名优秀的程序员,十分优秀!