Python lxml和ElementTree之间有什么区别?

Python lxml和ElementTree之间有什么区别?,python,lxml,elementtree,Python,Lxml,Elementtree,说到这个,我经常看到两个库被推荐:和 据我所知,这两个库彼此非常相似。它们似乎都有相似的模块名称、使用指南和功能。甚至import语句也相当相似 # Importing lxml and ElementTree import lxml.etree import xml.etree.ElementTree Python的lxml和ElementTree库之间有什么区别?我不认为lxml比ET更快,因为这两个模块都提供了大量的功能。为了提供一点上下文,ElementTree还支持XPath,但特

说到这个,我经常看到两个库被推荐:

据我所知,这两个库彼此非常相似。它们似乎都有相似的模块名称、使用指南和功能。甚至import语句也相当相似

 # Importing lxml and ElementTree
import lxml.etree
import xml.etree.ElementTree

Python的
lxml
ElementTree
库之间有什么区别?

我不认为lxml比ET更快,因为这两个模块都提供了大量的功能。为了提供一点上下文,ElementTree还支持XPath,但特别是ET有一个名为
iterparse()
的独特且有用的函数,它将XML文档重新生成为iterable。这将导致更快的解析,特别是对于大型XML文件

etapi本身创建的元素类型是列表和字典的混合体。这可能会让那些新加入该模块的人感到头疼,但坐下来看看,你会发现它非常灵活。

内置于Python标准库中,该库包括其他数据模块类型,如
json
csv
。这意味着每次安装Python时都会附带该模块。对于大多数普通的XML操作,包括构建文档树、简单搜索和解析元素属性和节点值,甚至是名称空间,
ElementTree
是一个可靠的处理程序


是需要安装的第三方模块。在许多方面,
lxml
实际上扩展了
ElementTree
,因为内置模块中的大多数操作都是可用的。此扩展的主要功能是
lxml
同时支持XPath1.0和XSLT1.0。此外,
lxml
可以解析不符合XML的HTML文档,因此用于web抓取操作,甚至用作Pandas中的解析器和引擎。lxml的其他有用的通用特性包括漂亮的打印输出和支持。当然,作为第三方模块,与标准库相比,具有附加功能的版本也很容易访问

lxml
速度明显更快,可用于解析HTML,并支持XPath。有人专门解释了这些差异。
lxml
也更容易与名称空间一起使用
iterparse
不是ElementTree独有的;它也存在于lxml中:。lxml完全支持XPath1.0,而ElementTree只支持XPath特性的一个子集。