相关疑难解决方法(0)

在Python中解析大型XML文档的最快方法是什么?

我目前正在根据Python Cookbook的第12.5章运行以下代码:

from xml.parsers import expat

class Element(object):
    def __init__(self, name, attributes):
        self.name = name
        self.attributes = attributes
        self.cdata = ''
        self.children = []
    def addChild(self, element):
        self.children.append(element)
    def getAttribute(self,key):
        return self.attributes.get(key)
    def getData(self):
        return self.cdata
    def getElements(self, name=''):
        if name:
            return [c for c in self.children if c.name == name]
        else:
            return list(self.children)

class Xml2Obj(object):
    def __init__(self):
        self.root = None
        self.nodeStack = []
    def StartElement(self, name, attributes):
        element = Element(name.encode(), attributes)
        if self.nodeStack:
            parent = self.nodeStack[-1]
            parent.addChild(element)
        else:
            self.root …
Run Code Online (Sandbox Code Playgroud)

python xml performance parsing

57
推荐指数
5
解决办法
6万
查看次数

对大型XML文件使用Python Iterparse

我需要在Python中编写一个解析器,它可以在没有太多内存(仅2 GB)的计算机上处​​理一些非常大的文件(> 2 GB).我想在lxml中使用iterparse来做到这一点.

我的文件格式为:

<item>
  <title>Item 1</title>
  <desc>Description 1</desc>
</item>
<item>
  <title>Item 2</title>
  <desc>Description 2</desc>
</item>
Run Code Online (Sandbox Code Playgroud)

到目前为止我的解决方案是:

from lxml import etree

context = etree.iterparse( MYFILE, tag='item' )

for event, elem in context :
      print elem.xpath( 'description/text( )' )

del context
Run Code Online (Sandbox Code Playgroud)

不幸的是,这个解决方案仍然占用了大量的内存.我认为问题在于,在处理每个"ITEM"后,我需要做一些事情来清理空的孩子.在处理我的数据到正确清理之后,有人可以提供一些建议吗?

python xml lxml elementtree large-files

36
推荐指数
2
解决办法
3万
查看次数

Python xml ElementTree可以解析一个非常大的xml文件吗?

我正在尝试解析一个大文件(> 2GB)的结构化标记数据,并且内存不足以满足这一要求.这对于这种情况来说,这是XML解析类的最佳方式.更多细节请.

python xml

9
推荐指数
2
解决办法
8370
查看次数

python:是否有一个作为生成器实现的XML解析器?

我想"动态"解析一个大的XML文件.我想使用python生成器来执行此操作.我尝试过"xml.etree.cElementTree"的"iterparse"(这真的很不错),但仍然不是生成器.

其他建议?

python xml parsing generator

8
推荐指数
3
解决办法
4243
查看次数

标签 统计

python ×4

xml ×4

parsing ×2

elementtree ×1

generator ×1

large-files ×1

lxml ×1

performance ×1