首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用lxml.html替换元素

用lxml.html替换元素
EN

Stack Overflow用户
提问于 2009-11-28 23:22:59
回答 2查看 8.4K关注 0票数 9

作为一个整体,我对lxml和HTML解析器是相当陌生的。我想知道是否有一种方法可以将树中的元素替换为另一个元素……

例如,我有:

代码语言:javascript
复制
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“,因为”lxml.etree._Element“不是一个hilited。

这可行吗?

致以敬意,

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-29 00:19:23

关于lxml,

doc.replace(block, hilited)

块的是lxml的Element对象,使用的是string,您不能替换它。

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

代码语言:javascript
复制
block.text=hilited 

代码语言:javascript
复制
body=body.replace(block.text,hilited)
票数 5
EN

Stack Overflow用户

发布于 2009-11-28 23:35:06

如果您不熟悉python HTML解析器,可以尝试使用BeautifulSoup,这是一种允许modify the parse tree easily的html/xml解析器。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1812764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档