python3数据处理(一)-- 解析XML,Excle文件

本文介绍如何使用Python的xml.etree模块读取XML结构,重点关注Data子元素的解析,以及利用xlrd包读取Excel文件。通过示例展示了遍历XML中的Observation元素获取dim和value,并探讨了提取Excel工作表数据的方法。
摘要由CSDN通过智能技术生成

读取XML结构

本文用xml.etree包

from xml.etree import ElementTree as ET

#parse返回一个python对象
tree = ET.parse('C:/Users/elenawang/Documents/data/datatext.xml')
#获得树(tree)的根元素
root = tree.getroot()
print(root)

#<Element 'GHO' at 0x000001E288E184A8>

查看root的所有方法和属性

print(dir(root))
['__class__', '__copy__', '__deepcopy__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getstate__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__setstate__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'extend', 'find', 'findall', 'findtext', 'get', 'getchildren', 'getiterator', 'insert', 'items', 'iter', 'iterfind', 'itertext', 'keys', 'makeelement', 'remove', 'set']

查看根元素的子元素

print(list(root))

[<Element 'QueryParameter' at 0x000001E288E7FEA8>, <Element 'QueryParameter' at 0x000001E288EAA6D8>, <Element 'QueryParameter' at 0x000001E288EAA728>, <Element 'QueryParameter' at 0x000001E288EAA778>, <Element 'QueryParameter' at 0x000001E288EAA7C8>, <Element 'QueryParameter' at 0x000001E288EAA818>, <Element 'Copyright' at 0x000001E288EAA868>, <Element 'Disclaimer' at 0x000001E288EAA958>, <Element 'Metadata' at 0x000001E288EAA9F8>, <Element 'Data' at 0x000001E2890EC778>]

列表中包含element对象分别为QueryParameter,Copyright,Disclaimer,Metadata,Data

重点研究Data子元素


#重点研究Data子元素
data = root.find('Data')
print(list(data))

:find 返回第一个匹配的元素,findall返回匹配所有元素。这里由于我们知道只有一个data,所以用find

返回一个超级长的列表,列表有Observation元素组成,我们遍历:

for observation in data:
    for item in observation:
        print(item)

输出很多dim和value,

  • 我们来探索其中的内容,用.text
for observation in data:
    for item in observation:
        print(item)

返回很多None,是因为很多元素的标签之间没有任何文本

检查是否具有子元素:

for observation in data:
    for item in observation:
        print(list(item))
  • 查看节点的属性 ,.attrib
for observation in data:
    for item in observation:
        print(list(item))

其中一条记录:

{
  'Code': 'MLE', 'Category': 'SEX'}
{
  'Code': '2012', 'Category': 'YEAR'}
{
  'Code': 'WPR', 'Category': 'REGION'}
{
  'Code': 'NIU', 'Category': 'COUNTRY'}
{
  'Code': 'WB_LI', 'Category': 'WORLDBANKINCOMEGROUP'}
{
  'Code': 'WHOSIS_000002', 'Category': 'GHO'}
{
  'Code': 'PUBLISHED', 'Category': 'PUBLISHSTATE'}
{
  'Numeric': '62.00000'}

我们希望和解析CSV文件一样,得到下边的结构:

{
  'SEX'
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值