首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从ET.parse迁移到etree.iterparse

从ET.parse迁移到etree.iterparse
EN

Stack Overflow用户
提问于 2016-02-11 12:13:10
回答 1查看 429关注 0票数 0

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

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

代码语言:javascript
复制
import xml.etree.ElementTree as ET
tree = ET.parse('file.osm')
root = tree.getroot()

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

代码语言:javascript
复制
import xml.etree.ElementTree as etree
context=etree.iterparse('file.osm', events=('start', 'end', 'start-ns', 'end-ns'))

,而不是破坏我的代码的其余部分(只是我代码的一部分)

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2016-02-11 14:40:30

代码语言:javascript
复制
tree = ET.iterparse('file.osm')
root = tree.root

这会给你树根。从那里看,它与解析相同。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35339067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档