栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 面试经验 > 面试问答

将XML文件解析为Python对象

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将XML文件解析为Python对象

如果您认为正则表达式比这更简单,那么我心爱的SD Chargers帽子就不适合您使用:

#!/usr/bin/env pythonimport xml.etree.cElementTree as etsxml="""<encspot>  <file>   <Name>some filename.mp3</Name>   <Enprer>Gogo (after 3.0)</Enprer>   <Bitrate>131</Bitrate>  </file>  <file>   <Name>another filename.mp3</Name>   <Enprer>iTunes</Enprer>   <Bitrate>128</Bitrate>    </file></encspot>"""tree=et.fromstring(sxml)for el in tree.findall('file'):    print '-------------------'    for ch in el.getchildren():        print '{:>15}: {:<30}'.format(ch.tag, ch.text)print "nan alternate way:"  el=tree.find('file[2]/Name')  # xpathprint '{:>15}: {:<30}'.format(el.tag, el.text)

输出:

-------------------Name: some filename.mp3          Enprer: Gogo (after 3.0)Bitrate: 131     -------------------Name: another filename.mp3       Enprer: iTunes          Bitrate: 128an alternate way:Name: another filename.mp3

如果您对正则表达式的吸引力不那么强,那么下面的列表理解功能同样令人难以理解,可以创建数据结构:

[(ch.tag,ch.text) for e in tree.findall('file') for ch in e.getchildren()]

<file>
以文档顺序创建XML子级的元组列表:

[('Name', 'some filename.mp3'),  ('Enprer', 'Gogo (after 3.0)'),  ('Bitrate', '131'),  ('Name', 'another filename.mp3'),  ('Enprer', 'iTunes'),  ('Bitrate', '128')]

显然,只要多花点时间,再多加一点考虑,就可以使用ElementTree从XML创建所需的任何数据结构。它是Python发行版的一部分。

编辑

高尔夫代码开了!

[{item.tag: item.text for item in ch} for ch in tree.findall('file')] [ {'Bitrate': '131',    'Name': 'some filename.mp3',    'Enprer': 'Gogo (after 3.0)'},   {'Bitrate': '128',    'Name': 'another filename.mp3',    'Enprer': 'iTunes'}]

如果您的XML仅包含该

file
部分,则可以选择您的高尔夫。如果您的XML有其他标签,其他部分,则需要说明孩子所在的部分,并且需要使用
findall

在Effbot.org上有关于ElementTree的教程。



转载请注明:文章转载自 www.wk8.com.cn
本文地址:https://www.wk8.com.cn/it/640193.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 wk8.com.cn

ICP备案号:晋ICP备2021003244-6号