编写了解析.osm文件的代码。花很多时间来构建多达50行的代码,但遇到了“内存错误”问题。似乎最好的解决方案是使用interparse()而不是parse()。
我的问题是:我应该如何更改我的代码(排列我的代码)
import xml.etree.ElementTree as ET
tree = ET.parse('file.osm')
root = tree.getroot()to (使用interparse()方法)(不是我的代码)
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)发布于 2016-02-11 14:40:30
tree = ET.iterparse('file.osm')
root = tree.root这会给你树根。从那里看,它与解析相同。
https://stackoverflow.com/questions/35339067
复制相似问题