2

我在 Windows 32 位 PC 上使用 Python 2.4 版本。我正在尝试使用 ElementTree 模块解析一个非常大的 XML 文件。我从 effbot.org 下载了这个模块的 1.2.6 版本。

为了我的目的,我遵循了以下代码:

import elementtree.ElementTree as ET

input = ''' 001 Chuck 009 Brent '''
stuff = ET.fromstring(input)
lst = stuff.findall("users/user")
print len(lst)

for item in lst:
    print item.attrib["x"]

item = lst[0]
ET.dump(item)
item.get("x") # get works on attributes
item.find("id").text
item.find("id").tag

for user in stuff.getiterator('user'):
    print "User" , user.attrib["x"]

ET.dump(user)

如果输入的内容太大,超过10000行,fromstring函数会报错(下)。谁能帮我纠正这个错误?

这是生成的错误:

回溯(最后一次调用):文件“C:\Documents and Settings\hariprar\My Documents\My files\Python Try\xml_try1.py”,第 16 行,在 -toplevel- stuff = ET.fromstring(input) File 中C:\Python24\Lib\site-packages\elementtree\ElementTree.py”,第 1012 行,在 XML 中返回 api.fromstring(text) 文件“C:\Python24\Lib\site-packages\elementtree\ElementTree.py”,第 182 行,fromstring parser.feed(text) 文件“C:\Python24\Lib\site-packages\elementtree\ElementTree.py”,第 1292 行,feed self._parser.Parse(data, 0) ExpatError: not well -formed(无效令牌):第 2445 行,第 39 列

4

1 回答 1

1

看一下iterparse功能。它将让您逐步解析输入,而不是将其作为一大块读入内存。

它在这里描述:http: //effbot.org/zone/element-iterparse.htm

于 2012-06-06T16:09:01.557 回答