2011-06-01 41 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