当前位置: 首页 > 面试题库 >

在lxml中,如何删除标签但保留所有内容?

葛书
2023-03-14
问题内容

问题是这样的:我有一个像这样的XML片段:

<fragment>text1 <a>inner1 </a>text2 <b>inner2</b> <c>t</c>ext3</fragment>

为了得到结果,我想删除所有<a>-和<c>-Tags,但保留它们的(文本)内容和子节点不变。另外,<b>-Element应该保持不变。结果应该这样

<fragment>text1 inner<d>1</d> text2 <b>inner2</b> text3</fragment>

目前,我将回到一个非常肮脏的把戏:我将etree.tostring这个片段,通过正则表达式删除有问题的标签,并用etree.fromstring结果替换原始片段(不是真正的代码,但是应该这样):

from lxml import etree
fragment = etree.fromstring("<fragment>text1 <a>inner1 </a>text2 <b>inner2</b> <c>t</c>ext3</fragment>")
fstring = etree.tostring(fragment)
fstring = fstring.replace("<a>","")
fstring = fstring.replace("</a>","")
fstring = fstring.replace("<c>","")
fstring = fstring.replace("</c>","")
fragment = etree.fromstring(fstring)

我知道我可能可以使用xslt来实现这一点,并且我知道lxml可以利用xslt,但是必须有更多的lxml本机方法吗?

供参考:我尝试使用lxml的element.replace到达那里,但是由于我想在之前有元素节点的地方插入文本,所以我认为我不能这样做。


问题答案:

试试这个:http :
//lxml.de/api/lxml.etree-
module.html#strip_tags

>>> etree.strip_tags(fragment,'a','c')
>>> etree.tostring(fragment)
'<fragment>text1 inner1 text2 <b>inner2</b> text3</fragment>'


 类似资料:
  • 我正在尝试使用 Jsoup 删除 HTML 页面标记之间的所有文本 例如,如果输入HTML是 输出应该是 基本上,我想删除返回的内容。 我找到了很多相反的帖子,只保留文本,但没有解决我的问题。知道怎么做吗? 编辑 maverick9999:https://stackoverflow.com/a/24292349/3589481提出的解决方案将解决大部分情况。 然而,正如评论中提到的,这个解决方案也

  • 问题内容: 我正在尝试使用Jsoup删除HTML页面的标签之间的所有文本 例如,如果输入的HTML是 输出应为 基本上,我想删除由返回的内容 我发现有很多帖子是相反的,只保留文本,而没有什么可以解决我的问题。有关如何执行此操作的任何想法? 编辑 maverick9999提出的解决方案将解决大多数情况。 但是,正如注释中所注意到的,此解决方案还将删除嵌套标签。 举个例子: 将在输出中删除一个div:

  • 我想清除所有筛选规则,但保留筛选本身。 有没有直接快速的方法去做呢? 我找到的代码是: 它获取筛选器对象,我对筛选器#的选项数量是有限的。 注意:删除此筛选器,但我需要保留它。

  • 假设我有一个像这样的html片段: 我想从中得到的是: 所以我的问题是:如何从html中去掉所有包装标签,只得到与html中相同顺序的文本?正如您在标题中看到的,我想使用jsoup进行解析。 重音html示例(请注意“á”字符): 我想要的是: 这个html不是静态的,一般来说,我只是想解码人类可读形式的通用html片段的每一个文本,宽度线中断。

  • 我决定删除Laravel5.7项目中的所有迁移,因为我更愿意手动创建/更新表。我意识到数据仍然可以从数据库加载,而无需任何迁移文件。

  • 问题内容: 我正在使用http://lxml.de/库解析html文档。到目前为止,我已经弄清楚了如何从html文档中剥离标签。在lxml中,如何删除标签但保留所有内容?但是该文章中描述的方法将保留所有文本,剥离标签而不会删除实际脚本。我还找到了一个对lxml.html.clean.Cleaner的类引用http://lxml.de/api/lxml.html.clean.Cleaner- cla