Python开发 - elementtree XML和字符串操作
我正在使用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)
现在,如果只有一种文件类型,那就没问题了,但这里面有三种类型(jpg、flv和mp4)。所以当我在视图中循环查看这些文件时,它们会被一一列出来,但如果我只想抓取flv文件,或者只想要mp4文件,该怎么做呢?而且它们在列表中的顺序也不是固定的。
有没有办法可以判断文件名是否以.mp4结尾,然后执行某个操作?或者在模板中也能做到这一点吗?
如果我尝试这样做:
url = i.attrib
if url.get("Href", () ).endswith('jpg'):
result.append(i.attrib)
我会遇到一个错误,提示元组对象没有这个属性endswith。这为什么是一个元组?我以为它是一个字典呢?
1 个回答
2
你得到一个元组是因为你给url.get()
提供了一个元组(用括号表示)作为默认返回值。如果你提供一个空字符串,就可以使用它的.endswith()
方法。另外,注意这个元素本身也有一个get()
方法,可以用来获取属性值(你不需要通过.attrib
来获取)。举个例子:
if i.get('Href', '').endswith('.jpg'):
result.append(i.attrib)