博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 解析XML文件
阅读量:5036 次
发布时间:2019-06-12

本文共 2577 字,大约阅读时间需要 8 分钟。

比较高效的python 解析XML文件

参考 http://codingpy.com/article/parsing-xml-using-python/

try:    import xml.etree.cElementTree as ETexcept ImportError:    import xml.etree.ElementTree as ETimport timedef parse_poi_by_elementTree(filepath):    t0 = time.time()    tree = ET.ElementTree(file=filepath)    pois_element_num = 0    vde_poi = 0    # for elem in tree.iter(tag='Pois'):    #     pois_element_num = elem.get('Num')    #     print pois_element_num    #     for e in elem.iter():    #         if e.tag == 'Poi':    #             vde_poi += 1    pois_element_num = tree.iter(tag='Pois').next().get('Num')    vde_poi = len(list(tree.iter(tag='Poi')))    cost_time = time.time() - t0    print 'parse_poi_by_elementTree time cost is %s' % cost_time    return pois_element_num, vde_poidef parse_poi_by_iterparse(filepath):    t0 = time.time()    pois_element_num = 0    vde_poi = 0    for event, elem in ET.iterparse(filepath):        # if event == 'end':        if elem.tag == 'Poi':            vde_poi += 1        if elem.tag == "Pois":            pois_element_num = int(elem.get('Num'))        elem.clear()    cost_time = time.time() - t0    print 'parse_poi_by_iterparse time cost is %s' % cost_time    return pois_element_num, vde_poifrom statistic import StatisticItem, XML_STREET, XML_POIimport osdef parse_street_xml_by_ET(street_file):    if not os.path.exists(street_file):        return StatisticItem(XML_STREET, [0, 0])    street_num = 0    vde_streets = 0  # actual count    for event, elem in ET.iterparse(street_file):        if elem.tag == 'Street':            vde_streets += 1        if elem.tag == "Streets":            street_num = int(elem.get('Num'))        elem.clear()    return StatisticItem(XML_STREET, [vde_streets, street_num])def parse_poi_xml_by_ET(poi_file):    if not os.path.exists(poi_file):        return StatisticItem(XML_POI, [0, 0])    poi_num = 0    vde_pois = 0  # actual count    for event, elem in ET.iterparse(poi_file):        if elem.tag == 'Poi':            vde_pois += 1        if elem.tag == "Pois":            poi_num = int(elem.get('Num'))        elem.clear()    return StatisticItem(XML_POI, [vde_pois, poi_num])if __name__ == '__main__':    # C:\Users\shchshan\Desktop\vde\State_14120002\POI_1414000018.xml    # C:\Users\shchshan\Desktop\vde\State_14120001\POI_1414000001.xml    print parse_poi_by_elementTree(r'C:\Users\shchshan\Desktop\vde\State_14120001\POI_1414000001.xml')    print parse_poi_by_iterparse(r'C:\Users\shchshan\Desktop\vde\State_14120001\POI_1414000001.xml')

 

转载于:https://www.cnblogs.com/dasheng-maritime/p/7491171.html

你可能感兴趣的文章
Linux下MySQL数据库安装与配置
查看>>
Extjs String转Json
查看>>
oracle入门(4)——少而常用的命令
查看>>
打印机设置(PrintDialog)、页面设置(PageSetupDialog) 及 RDLC报表如何选择指定打印机...
查看>>
Java 虚拟机部分面试题
查看>>
二叉树的遍历问题总结
查看>>
Spring之面向切面编程AOP
查看>>
MATLAB GUI程序设计中使文本框接收多行输入的方法
查看>>
全文检索-Elasticsearch (四) elasticsearch.net 客户端
查看>>
Oracle DBMS_SESSION
查看>>
sublime复制当前行到下一行
查看>>
WPF 3D变换应用
查看>>
ArchLinux安装开源VMware Tools
查看>>
DB2 锁升级示例1
查看>>
16.RDD实战
查看>>
MainFrame知识小结(20120210)—dfsort/syncsort中的数据类型
查看>>
D - Flip tile
查看>>
Java连接RabbitMQ之创建连接
查看>>
开户vim编程之--cscope支持
查看>>
python数据类型图解
查看>>