我对python来说比较新。我一直试图通过实践方法学习python(我通过做euler项目学习了c / c ++)。 现在我正在学习如何从文件中提取数据。我已经掌握了从简单的文本文件中提取数据的问题,但我有点卡在xml文件上。 我试图做的一个例子。 我在谷歌驱动器上备份了我的通话记录,而且它们很多(约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"
等等。 你怎么建议我这样做?
答案 0 :(得分:0)
建议在问题中提供足够的信息,以便重新创建问题。
iter
首先,我们需要弄清楚我们<call ../>
可以使用哪些元素。由于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']
覆盖元素,并根据需要分离元素属性键和值。
工作代码
>>>
duration = 49
data = 1483514046018
>>>
<强>结果强>
struct Animal {
var age: Int
var type: String
var jsonString: String {
return "{\"\(age)\": \"\(type)\"}"
}
var jsonObjc: Any? {
if let data = jsonString.data(using: String.Encoding.utf8) {
return try? JSONSerialization.jsonObject(with: data, options: .mutableContainers)
}
return nil
}
}
let animal = Animal(age: 1, type: "dog")
print(animal.jsonString)
print(animal.jsonObjc ?? "nil")