对xml文件的数据提取

在对xml文件内容进行提取时一般需要通过节点对其结构进行解析总结(通过循环遍历的方式更好的获取数据),通过其节点名或节点属性获取所需的数据。

如现有food.xml的内容如下所示:

Belgian Waffles

$5.95

Two of our famous Belgian Waffles with plenty of real maple syrup

650

Strawberry Belgian Waffles

$7.95

Light Belgian waffles covered with strawberries and whipped cream

900

可以很容易看出,该文件的结构为food节点下包含name、price、description、calories四个同级节点。

在对xml文件进行提取时,需要用到xml.dom.minidom对xml文件进行解析,解析之后通过对节点名的判断获取相应的值。

现例下,对name节点的值以及time属性值进行提取。

代码如下:

import xml.dom.minidom as DOM

dom=DOM.parse(xml_file)#将xml文件解析到DOM,xml_file为xml文件的地址

root=dom.documentElement#进行DOM节点解析

for child in root.childNodes:#进入子节点

if child.nodeName=='food':#child.nodeName为节点名

for child1 in child.childNodes:#进入子节点

if child1.nodeName=='name':

print("The food is:")

print(child1.firstChild.data)#输出节点的内容

print(child1.getAttribute('time'))#输出属性为time的值

结果:

 对JSON文件的数据提取

通过json库将已编码的 JSON 字符串解码为 Python 对象,数据形式变成字典,通过键:值的方式进行存储,因此我们可以通过字典对所需内容进行提取。

现有food.json内容如下:

{

"status": "0000",

"message": "success",

"data": {

"title": {

"id": "001",

"name": "青菜"

},

"content": [

{

"id": "001",

"value": "白菜"

},

{

"id": "002",

"value": "空心菜"

}

]

}

}

需先下载json包,现对food.json文件进行导入:

import json

from collections import defaultdict

path="..\\food.json"

with open(path,"r",encoding='utf-8') as jsonfile:

json_dict=json.load(jsonfile)#字典

查看文件结构:

print(json_dict)#获得所有json内容(完整字典)

print(json_dict.values())#获得字典的键

print(json_dict.keys())#获得字典的值

 

 现将json内容提取成:

代码可为:

data=defaultdict(list)#创建字典保存所提取的数据

#法一:通过遍历键节点获取所需数据

for key,value in json_dict.items():#将所获取的json数据以字典格式进行处理

if key=="data":

for key1,value1 in value.items():#键=‘data’的值也是一个字典

if key1 =='title':

for key2,value2 in value1.items():#键=‘title’的值也是一个字典

if key2=='name':

theKey=value2

if key1 =='content':#键=‘data’的值是一个列表

for value2 in value1:

for key3,value3 in value2.items():#列表里的每一个值也为字典

if key3=='value':

data[theKey].append(value3)

#法二:直接通过键节点获得所需数据

for item in json_dict['data']['content']:

data[json_dict['data']['title']['name']].append(item['value'])

参考链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: