我在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)
如果输入内容太大,超过10,000行,fromstring
函数会引发错误(如下)。任何人都可以帮我纠正这个错误吗?
这是产生的错误:
回溯(最近一次调用最后一次):文件“C:\ Documents and Settings \ hariprar \ My Documents \ My files \ Python Try \ xml_try1.py”,第16行,in-intoplevel-stuff = ET.fromstring(输入)文件“C:\ Python24 \ Lib \ site-packages \ elementtree \ ElementTree.py”,第1012行,在XML中返回api.fromstring(text)文件“C:\ Python24 \ Lib \ site-packages \ elementtree \ ElementTree。 py“,第182行,instring parser.feed(text)文件”C:\ Python24 \ Lib \ site-packages \ elementtree \ ElementTree.py“,第1292行,在feed self._parser.Parse(data,0)ExpatError :格式不正确(令牌无效):第2445行,第39栏
答案 0 :(得分:1)
查看iterparse
功能。它会让你逐步解析你的输入,而不是把它作为一个大块读入内存。