对xml文件的数据提取
在对xml文件内容进行提取时一般需要通过节点对其结构进行解析总结(通过循环遍历的方式更好的获取数据),通过其节点名或节点属性获取所需的数据。
如现有food.xml的内容如下所示:
可以很容易看出,该文件的结构为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'])
参考链接
发表评论