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