整体而言,我对lxml和HTML解析器来说还很陌生。
我想知道是否有一种方法可以将树中的一个元素替换为另一个元素...

例如,我有:

body = """<code> def function(arg): print arg </code> Blah blah blah <code> int main() { return 0; } </code> """

doc = lxml.html.fromstring(body)
codeblocks = doc.cssselect('code')

for block in codeblocks:
  lexer = guess_lexer(block.text_content())
  hilited = highlight(block.text_content(), lexer, HtmlFormatter())
  doc.replace(block, hilited)

我想按照这些原则做一些事情,但这会导致“TypeError”,因为“hilited”不是lxml.etree._Element。

这可行吗?

问候,

最佳答案

关于lxml,

doc.replace(block, hilited)
是lxml的Element对象,被隐藏的是字符串,您不能替换它。

有两种方法可以做到这一点

block.text=hilited

或者
body=body.replace(block.text,hilited)

关于python - 用lxml.html替换元素,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1812764/

10-13 09:35