gpt4 book ai didi

Python BeautifulSoup - 在找到的关键字周围添加标签

转载 作者:太空宇宙 更新时间:2023-11-04 09:11:23 27 4
gpt4 key购买 nike

我目前正在从事一个项目,我希望在该项目中允许在大量 HTML 文件中/之上进行正则表达式搜索。

首先确定我感兴趣的文件后,我现在要突出显示找到的关键字!

使用 BeautifulSoup 我可以确定找到我的关键字的节点。我做的一件事是改变整个 parent 的颜色。

但是,我还想在我找到的关键字周围添加我自己的 -Tags。

使用 BFSoup 提供的 find() 函数确定位置等没什么大不了的。但是在常规文本周围添加我的标签似乎是不可能的?

# match = keyword found by another regex
# node = the node I found using the soup.find(text=myRE)
node.parent.setString(node.replace(match, "<myspan>"+match+"</myspan>"))

这样我只添加了纯文本而不是适当的标签,因为文档不是新解析的,我希望避免这种情况!

我希望我的问题变得有点清楚:)

最佳答案

这是一个简单的例子,展示了一种方法:

import re
from bs4 import BeautifulSoup as Soup

html = '''
<html><body><p>This is a paragraph</p></body></html>
'''

(1) 存储文本并清空标签

soup = Soup(html)
text = soup.p.string
soup.p.clear()
print soup

(2) 获取要加粗的单词的开始和结束位置(为我的英语道歉)

match = re.search(r'\ba\b', text)
start, end = match.start(), match.end()

(3) 拆分文本并添加第一部分

soup.p.append(text[:start])
print soup

(4) 创建一个标签,将相关文本添加到其中并附加到父级

b = soup.new_tag('b')
b.append(text[start:end])
soup.p.append(b)
print soup

(5) 附加文本的其余部分

soup.p.append(text[end:])
print soup

这是上面的输出:

<html><body><p></p></body></html>
<html><body><p>This is </p></body></html>
<html><body><p>This is <b>a</b></p></body></html>
<html><body><p>This is <b>a</b> paragraph</p></body></html>

关于Python BeautifulSoup - 在找到的关键字周围添加标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14652706/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com