lxml和ElementTree有什么区别?

2024-05-20 01:32:42 发布

您现在位置:Python中文网/ 问答频道 /正文

当谈到generating XML data in Python时,我经常看到推荐的库有两个:lxmlElementTree

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

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

Python的lxmlElementTree库之间有什么区别?


Tags: 模块andinimport功能dataxml语句
2条回答

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

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

ElementTree内置了Python标准库,其中包括其他数据模块类型,如jsoncsv。这意味着模块随Python的每次安装一起提供。对于大多数常规的XML操作,包括构建文档树,简单地搜索和解析元素属性和节点值,甚至名称空间,ElementTree是一个可靠的处理程序。

Lxml是需要安装的第三方模块。在许多方面,lxml实际上,扩展了ElementTree,因为内置模块中的大多数操作都是可用的。这个扩展的主要特点是lxml同时支持XPath 1.0和xslt1.0。此外,lxml可以解析不符合XML的HTML文档,因此用于web抓取操作,甚至可以作为BeautifulSoup中的解析器和Pandas中的引擎^{}。lxml的其他有用的、常见的特性包括pretty嫒u printoutput、^{}^{}支持。当然,作为第三方模块,与标准库相比,具有附加功能的版本也很容易访问。

相关问题 更多 >