前一段时间忙于毕业论文的事情,一直没有时间关注博客内容。废话不多说了,本篇内容主要针对最近处理XML文件而进行整理的,以下以实例进行讲解。
1.XML文件
XML 指可扩展标记语言(eXtensible Markup Language),被设计用来传输和存储数据。XML文档格式如下:
<?xml version="1.0" encoding="UTF-8"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
一个xml文档必须要有第一行的声明,一般由version和encoding属性组成。
根元素(如note):它是xml文档里面唯一的;它的开始是放在最前面,结束是放在最后面。
元素:所有的xml元素都必须有结束标签(如<to>…</to>),可以按以下格式命名:
<元素名 属性名=“属性值”/> 例:<Student ID=“S100”> <Name>Tom</Name> </Student>
2.python解析XML文档
在简单了解XML文档的格式后,可以利用python对内容进行解析。
XML文件如下:
<?xml version="1.0" encoding="UTF-8"?> <TestData> <weibo id="1" emotion-type1="happiness" emotion-type2="none"> <sentence id="1" opinionated="Y" emotion-1-type="happiness" emotion-2-type="none" keyexpression1="哈哈">凑合看吧,哈哈!</sentence> <sentence id="2" opinionated="N" keyexpression1="null">不知道她会喜欢吗?</sentence> </weibo> <weibo id="2" emotion-type1="happiness" emotion-type2="none"> <sentence id="1" opinionated="Y" emotion-1-type="happiness" emotion-2-type="none" keyexpression1="很荣幸">很荣幸 崔莲姬能与成方圆老师,李光曦老师,李谷一老师同台,很荣幸~ 也很感谢大家对 新版哆来咪的喜爱..</sentence> </weibo> <weibo id="3" emotion-type1="disgust" emotion-type2="none"> <sentence id="1" opinionated="Y" emotion-1-type="disgust" emotion-2-type="none" keyexpression1="真不咋地" keyexpression2="这么差劲">眨眼5.1了,两眼一睁我就到伟大的祖国首都了,可是花90块钱住了个济南三十块钱的宾馆,上厕所上了个不敢睁眼,这首都给我的印象真不咋地,清华北大都搁着呢,这水平咋这么差劲!</sentence> </weibo> <weibo id="4" emotion-type1="disgust" emotion-type2="none"> <sentence id="1" opinionated="Y" emotion-1-type="disgust" emotion-2-type="none" keyexpression1="大烂片">昨天看了《特工邵特》,实在后悔,大烂片。</sentence> <sentence id="2" opinionated="Y" emotion-1-type="disgust" emotion-2-type="none" keyexpression1="无语">剧情进行到一个小时的时候,俄罗斯总统和美国总统已经都被毙了,核弹已经对准了麦加,无语。</sentence> </weibo> </TestData>
为了解析上述文件,首先引入XML组件:
import xml.dom.minidom
然后加载XML文件:
dom = xml.dom.minidom.parse("./Weibo_Texts/ABC.xml") rootdata = dom.documentElement#获取根元素
获取标签之间的数据:
itemlist = rootdata.getElementsByTagName("weibo") sentencelist = itemlist[0].getElementsByTagName("sentence") print(sentencelist[0].firstChild.data) #输出:凑合看吧,哈哈!
获取属性值:
#node.getAttribute(AttributeName)获取XML节点属性值
代码如下:
#coding=utf-8 #处理输入样本数据 import xml.dom.minidom from io import open dom = xml.dom.minidom.parse("./Weibo_Texts/ABC.xml") rootdata = dom.documentElement itemlist = rootdata.getElementsByTagName("weibo") i=0 sum=0 sentences=[] for item in itemlist: i=i+1 sentencelist = item.getElementsByTagName("sentence") #sum+=len(sentencelist) for j in range(len(sentencelist)): #print(i,sentencelist[j].firstChild.data) sentences.append(sentencelist[j].firstChild.data) print(sentencelist[j].getAttribute('emotion-1-type')) def write_file(file,sentences): with open(file,'wb') as f: for line in sentences: f.write((line+'\n').encode('utf-8')) write_file('./ABC.txt',sentences)#写文件
转载请标明出处:python处理XML文件
文章来源: python处理XML文件