【发布时间】:2013-05-23 21:43:53
【问题描述】:
我正在尝试使用 python 和 BeautifulSoup 标记一个 HTML 文件(字面上将字符串包装在“标记”标签中)。问题基本如下...
假设我有我的原始 html 文档:
test = "<h1>oh hey</h1><div>here is some <b>SILLY</b> text</div>"
我想对此文档中的字符串进行不区分大小写的搜索(忽略 HTML)并将其包装在“标记”标签中。所以假设我想在 html 中找到“这里有一些愚蠢的文本”(忽略粗体标签)。我想获取匹配的 html 并将其包装在“标记”标签中。
例如,如果我想在 test 中搜索“here is some silly text”,那么想要的输出是:
"<h1>oh hey</h1><div><mark>here is some <b>SILLY</b> text</mark></div>"
有什么想法吗?如果使用 lxml 或正则表达式更合适,我也愿意接受这些解决方案。
【问题讨论】:
-
接近另一个问题的副本。 stackoverflow.com/questions/8936030/…
-
@melwil - 很接近,但仅涵盖问题的(区分大小写的)文本检索部分。如何使用类似的搜索字符串,在 html 中查找不区分大小写的匹配项,并将这些匹配项包装在标记标签中?
-
找到文本后,只需将其插入到标记标记中的父级中。
-
你想如何处理
<h1> here is some </h1> <h2> silly text </h2>?如果你把它变成<h1><mark> here is some </h1> <h2> silly text </mark></h2>,那么mark标签跨越两个兄弟元素之间。可以吗? -
@Kevin - 是的!我很好
标签: python regex html-parsing beautifulsoup lxml