如何在Python中用新格式替换HTML元素

3 投票
2 回答
1826 浏览
提问于 2025-04-17 06:02

有什么好的方法可以替换像这样的HTML标签:

Old : <div id=pgbrk" ....../>....Page Break....</div>

New : <!--page break -->

因为

的id可能有很多其他的值,所以用正则表达式来处理并不是个好主意。我需要一些类似LXML的东西。简单来说,我的问题就是要把一个HTML标签替换成一个字符串!

2 个回答

2

你可以使用普通的DOM(文档对象模型)来处理你的数据,具体可以参考这个链接:http://docs.python.org/library/xml.dom.minidom.html

1) 首先,解析你的源数据。

from xml.dom.minidom import parse
datasource = open('c:\\temp\\mydata.xml')
doc= parse(datasource)

2) 接下来,找到你想要删除的节点。

for node in doc.getElementsByTagName('div'):
    for attr in node.attributes:
        if attr.name == 'id':
            ...

3) 一旦找到这些目标节点,就用新的注释节点来替换它们。

parent = node.parentNode
parent.replaceChild(doc.createComment("page break"), node)

更多文档可以查看这里:http://docs.python.org/library/xml.dom.html

3

只要你的 div 有一个父标签,你就可以这样做:

import lxml.html as LH
import lxml.etree as ET

content='<root><div id="pgbrk" ......>....Page Break....</div></root>'
doc=LH.fromstring(content)
# print(LH.tostring(doc))    
for div in doc.xpath('//div[@id="pgbrk"]'):
    parent=div.getparent()
    parent.replace(div,ET.Comment("page break"))
print(LH.tostring(doc))

这样会得到

<root><!--page break--></root>

撰写回答