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

标签 python django elementtree

我正在使用ElementTree加载一系列 XML 文件并解析它们。解析文件时,我将从其中获取一些数据(标题和文本段落)。然后我需要获取一些存储在 XML 中的文件名。它们包含在名为 ContentItem 的元素中。

我的代码看起来有点像这样:

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)。因此,当我在 View 中循环浏览它们时,它会将它们吐出,但是如果我只想要那个 flv,我该如何获取该 flv 呢?或者只是mp4?它们也不总是以相同的顺序出现在列表中。

有没有办法说如果它以 .mp4 结尾,然后执行此操作,或者有没有办法在模板中执行此操作?

如果我尝试这样做;

        url = i.attrib
        if url.get("Href", () ).endswith('jpg'):
            result.append(i.attrib)

我收到错误元组对象没有属性结尾。为什么这是一个元组?我以为这是一个字典?

最佳答案

您得到一个元组,因为您提供了一个元组(括号)作为 url.get() 的默认返回值。提供一个空字符串,您可以使用其 .endswith() 方法。另请注意,元素本身有一个 get() 方法来检索属性值(您不必通过 .attrib)。示例:

if i.get('Href', '').endswith('.jpg'):
    result.append(i.attrib)

关于Python开发-elementtree XML和字符串操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6198991/

相关文章:

python - Django 1.8 在 Serializer 中获取 kwargs

python - 当两个单词之一发生变化时,在 Python 中查找两个指定单词之间的文本

python - 如何绘制一条线并设置嵌套列表中每条线的颜色?

django - 如何动态访问 Django 模型字段的详细名称?

python - sleep() 是否阻止了 Django 中请求的处理?

python - 有没有办法直接在xml中获取属性文本,而不需要遍历python中elementree中的子元素

python - 如何在数组中找到N个连续数字相等?

python - Python中抽象类和接口(interface)的区别

xml - Python3 xml,如何找到这个非命名空间的xml元素?

python - 'NoneType' 类型的参数不可迭代