Python开发-elementtree XML和字符串操作

问题描述

| 我正在使用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)