我正在尝试解析我已完成的xml文件,并将结果传递给稍后将使用的数组。打开xml读取并解析我在哪里挑选3个元素(通道,开始和标题)。如下面的代码所示,开始是日期和时间。我可以分割日期和时间并存储日期。当代码循环到每个xml条目时,我想选择通道,start和title并存储到多维数组。我在Brightscript中完成了这个,但无法理解Python的数组或列表结构。一旦我在数组或列表中有所有条目,我将需要解析该数组,删除所有标题和日期相同的日期。有人可以通过这个指导我吗?
xmldoc=minidom.parse (xmldoc)
programmes= xmldoc.getElementsByTagName("programme")
def getNodeText(node):
nodelist = node.childNodes
result = []
for node in nodelist:
if node.nodeType == node.TEXT_NODE:
result.append(node.data)
return ''.join(result)
title = xmldoc.getElementsByTagName("title")[0]
#print("Node Name : %s" % title.nodeName)
#print("Node Value : %s \n" % getNodeText(title))
programmes = xmldoc.getElementsByTagName("programme")
for programme in programmes:
cid = programme.getAttribute("channel")
starts=programme.getAttribute("start")
cutdate=starts[0:15]
year= int(cutdate[0:4])
month= int(cutdate[5:6])
day= int(cutdate[7:8])
hour= int(cutdate[9:10])
minute= int(cutdate[11:12])
sec= int(cutdate[13:14])
date=datetime(year, month, day,hour, minute, sec)
title = programme.getElementsByTagName("title")[0]
print("id:%s, title:%s, starts:%s" %
(cid, getNodeText(title), starts))
print (date)
答案 0 :(得分:1)
Python通常将数组称为list
s,看起来你想要的是一个列表列表(那里有一个array
模块和整个numpy
扩展名它自己的数组,但它看起来不像你想要的那样: - )。
因此,将所需列表设为空:
results = []
现在你只需打印东西,将它们附加到列表中:
results.append([cid, getNodeText(title), date])
(或者其他什么 - 你的缩进如此漫无边际会导致Python出现大量的语法错误,让我对你想要的东西感到困惑: - )。
现在为部分
我将需要解析该数组,删除所有标题和日期 同一天
按日期排序结果:
import operator
results.sort(key=operator.itemgetter(2))
然后分组:
import itertools
for date, items in itertools.groupby(results, operator.itemgetter(2)):
print(date,[it[1] for it in items])
或者您想对此分组做任何其他事情。
您可以通过多种方式改进这种风格,但这似乎可以为您提供您所要求的关键功能。