问题描述
|
我正在使用ElementTree加载一系列XML文件并对其进行解析。解析文件时,我正在从中获取一些数据(标题和一段文本)。然后,我需要获取存储在XML中的一些文件名。它们包含在名为“ 0”的元素中。
我的代码看起来像这样:
for item in dirlist:
newsML = ET.parse(item)
NewsLines = newsML.getroot()
HeadLine = NewsLines.getiterator(\"HeadLine\")
result.append(HeadLine)
p = NewsLines.getiterator(\"p\")
result.append(p)
ci = NewsLines.getiterator(\"ContentItem\")
for i in ci:
result.append(i.attrib)
现在,如果只有一种文件类型,那就可以了,但是它包含3种类型(jpg,flv和mp4)。因此,当我在视图中循环浏览它们时,它会将它们吐出,但是如果我只想要那个,我该如何抓住它呢?还是只是mp4?它们也不总是在列表中以相同的顺序出现。
有没有办法说它是否以.mp4结尾,然后执行此操作,还是有办法在模板中做到这一点?
如果我尝试这样做;
url = i.attrib
if url.get(\"Href\",() ).endswith(\'jpg\'):
result.append(i.attrib)
我得到一个错误的元组对象没有属性endswith。为什么这是一个元组?我以为那是字典?
解决方法
之所以得到元组,是因为您提供了元组(括号)作为
url.get()
的默认返回值。提供一个空字符串,您可以使用其.endswith()
方法。另请注意,元素本身具有get()
方法来检索属性值(不必通过via6ѭ进行操作)。例:
if i.get(\'Href\',\'\').endswith(\'.jpg\'):
result.append(i.attrib)