我对 python 比较陌生。我一直在尝试通过实践方法学习Python(我通过做euler项目学习了c/c++)。
现在我正在学习如何从文件中提取数据。我已经掌握了从简单文本文件中提取数据的窍门,但我有点陷入 xml 文件中。
我试图做的一个例子。
我在 Google Drive 上备份了通话记录,数量很多(大约 4000 条)
这是 xml 文件示例
<call number="+91234567890" duration="49" date="1483514046018" type="3" presentation="1" readable_date="04-Jan-2017 12:44:06 PM" contact_name="Dad" />
我想接听所有打给我爸爸的电话并像这样显示它们
number = 234567890
duration = "49" date="04-Jan-2017 12:44:06 PM"
duration = "x" date="y"
duration = "n" date="z"
诸如此类。
你建议我怎样做?
建议在问题中提供足够的信息,以便可以重现问题。
<?xml version="1.0" encoding="UTF-8"?>
<call number="+91234567890" duration="49" date="1483514046018" type="3"
presentation="1" readable_date="04-Jan-2017 12:44:06 PM"
contact_name="Dad" />
首先我们需要弄清楚哪些元素可以iter
在。自从<call ../>
在这里是根元素,我们对其进行迭代。
NOTE:如果在提供的行之前有标签/元素,则需要找出正确的根元素而不是call
.
>>> [i for i in root.iter('call')]
[<Element 'call' at 0x29d3410>]
在这里你可以看到,我们可以iter
在元素上call
.
那么我们简单地iter
覆盖元素并根据要求分离出元素属性键和值。
工作代码
import xml.etree.ElementTree as ET
data_file = 'test.xml'
tree = ET.parse(data_file)
root = tree.getroot()
for i in root.iter('call'):
print 'duration', "=", i.attrib['duration']
print 'data', "=", i.attrib['date']
Result
>>>
duration = 49
data = 1483514046018
>>>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)