【问题标题】:Python development - elementtree XML and string operationsPython开发——elementtree XML和字符串操作
【发布时间】:2011-09-06 03:21:02
【问题描述】:

我正在使用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)。因此,当我在视图中遍历它们时,它会将它们吐出,但是如果我只想要那个 flv,我该如何抓住呢?还是只是mp4?它们也不总是以相同的顺序出现在列表中。

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

如果我尝试这样做;

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

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

【问题讨论】:

标签: python django elementtree


【解决方案1】:

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

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

【讨论】:

  • 谢谢你的帮助
猜你喜欢
  • 2015-02-02
  • 2016-02-22
  • 2010-10-13
  • 1970-01-01
  • 2016-12-03
  • 2012-08-27
  • 1970-01-01
  • 1970-01-01
  • 2013-07-21
相关资源
最近更新 更多