python解析xml文件成字典_python处理.xml文件工具包之XML2Dict

xml文件是可扩展标记语言,在保存数据时,经常和.xml文件打交道,它语法简明、格式友好。具体的信息可以到百度百科科普下,下面主要介绍下我用的处理.xml文件的工具包XML2Dict

下载后把文件解压,和自己的.py文件放在一起,里边有两个文件:xml2dict.py, object_dict.py,在自己.py文件的开头加上

fromxml2dict import XML2Dict

xml=XML2Dict()

r= xml.parse("待处理文件名.xml")

示例一:

待处理文件:

分析下这个文件的格式:

最外一层被包围

往里一层是:,query中包括和两个属性

处理这个文件(取名:1.xml)代码:

from xml2dict importXML2Dict

xml=XML2Dict()

r= xml.parse('1.xml')for q inr.kbpentlink.query:printqprintq.idprintq.nameprintq.docidprint '-----------------'

执行结果:

可以看到.xml文件被解析成字典的形式。使用给工具包的要点就是:分清层次,一点一点的往里面递进。

下边来解析一个比较难的示例:

示例二:

待处理文件:

分析:

第一层:

第二层:

第三层:,里面有属性

第四层:(属性有的前提下),里面属性

这里的关键就是第三层:因为有的有一个,有的则有多个,还有的没有:一个是得到的是个字典,多个时是个列表

解析代码如下:

from xml2dict importXML2Dictimporttypes

xml=XML2Dict()

r= xml.parse('2.xml')for topic inr.entailment_corpus.TOPIC:print 'topic.t_id:' +topic.t_idfor h intopic.H:print 'H.h_id' +h.h_idprint 'H.H_sentence' +h.H_sentenceif h.has_key('text'):if type(h.text) == types.ListType: //多个时为列表类型print 'hello list'

printh.textfor text inh.text:print 'h.doc_id' + text.doc_id //单个时else:print 'hello dic'

print h.text //单个时h.text就可以输出了,不要for了,否则错误else:print "no text attribute"

结果:

这里引用了types里面的函数type(类型),用法如下示例:

已解决:

示例二中else替换为:type(h.text) == types.DictType: 效果不同,原因:

一般的字典类型为:

而此时类型为:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值