2011-06-01 44 views
1

我使用ElementTree加载一系列XML文件并解析它们。在解析文件时,我从中抓取了一些数据(标题和一段文字)。然后我需要获取存储在XML中的一些文件名。它们包含在名为ContentItem的元素中。Python开发 - elementtree XML和字符串操作

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

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) 

我得到一个错误的元组对象没有属性endswith。为什么这是一个元组?我认为这是一个字典?

+0

什么'.endswith()'(http://docs.python.org/library/stdtypes.html#str.endswith)或'.splitext()'(HTTP://文档.python.org /库/ os.path.html#os.path.splitext)? – arie 2011-06-01 09:36:56

+0

步骤1:搜索具有相同文件名匹配问题的其他人。 http://stackoverflow.com/search?q=%5Bpython%5D+filename+match第2步:选择一个类似的问题。 http://stackoverflow.com/questions/296173/how-do-i-copy-files-with-specific-file-extension-to-a-folder-in-my-python-versio。第3步:阅读别人做了什么。 – 2011-06-01 10:03:12

+0

这不是我试图做的同样的事情。我只想匹配元素属性中的某些文本。 – Matthew 2011-06-01 10:18:48

回答

2

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

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

非常感谢您的帮助 – Matthew 2011-06-01 11:23:34