Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从ET.parse迁移到etree.iterparse_Python_Python 2.7_Xml Parsing_Elementtree - Fatal编程技术网

Python 从ET.parse迁移到etree.iterparse

Python 从ET.parse迁移到etree.iterparse,python,python-2.7,xml-parsing,elementtree,Python,Python 2.7,Xml Parsing,Elementtree,编写了一个代码来解析.osm文件。 花费大量时间构建最多50行的代码,但遇到了“内存错误”问题。 似乎最好的解决方案是使用interparse()而不是parse() 我的问题是:我应该如何更改代码 (我的代码分层) to(使用interparse()方法) (不是我的代码) 并且不要破坏我的其余代码 (仅我代码的一部分) 这会给你树根。从这里开始,它与parse相同,不幸的是:AtributeError:“module”对象没有属性“interparse”,这是因为该属性的名称是iterpar

编写了一个代码来解析.osm文件。 花费大量时间构建最多50行的代码,但遇到了“内存错误”问题。 似乎最好的解决方案是使用interparse()而不是parse()

我的问题是:我应该如何更改代码 (我的代码分层)

to(使用interparse()方法) (不是我的代码)

并且不要破坏我的其余代码 (仅我代码的一部分)


这会给你树根。从这里开始,它与parse相同,不幸的是:AtributeError:“module”对象没有属性“interparse”,这是因为该属性的名称是iterparse而不是interparse
import xml.etree.ElementTree as ET
tree = ET.parse('file.osm')
root = tree.getroot()
import xml.etree.ElementTree as etree
context=etree.iterparse('file.osm', events=('start', 'end', 'start-ns', 'end-ns'))
list=[]
for i in root.findall('node'):  
    lat=i.get('lat')
    lon=i.get('lon')
    dict = {}
    for ii in i:        
        dict['lat']=lat
        dict['lon']=lon     
        key=ii.get('k')
        val=ii.get('v')     
        dict[key]=val       
    if len(dict)>0:
        list.append(dict)
tree = ET.iterparse('file.osm')
root = tree.root