2010-02-15 26 views
1

我想使用Feed解析器來處理包含頻繁更新(包含時間)內容的訂閱源。目標是顯示更新後的Feed的所有內容。在Python中顯示列表項

import feedparser 
d = feedparser.parse("some URL") 

print "Information of user" 
i = range(10) 

for i in d: 
    print d.entries[i].summary 

print " " 

作爲剖析數據列表,列表不接受字符串作爲指數,它顯示錯誤

,如:

File "F:\JavaWorkspace\Test\src\rss_parse.py", line 18, in <module> 
print d.entries[i].summary 
TypeError: list indices must be integers 

那我怎麼才能得到所有內容嗎?任何人都可以請我看看這個問題?提前致謝!

回答

4
for i in range(10): 
    print d.entries[i].summary 
4

i不是整數。我想i已經是飼料的條目,但更好的將其重命名:

嘗試:

for entry in d.entries: 
    print entry.summary 

如果你想第10項你要做的:

try: 
    for i in range(10): 
    print d.entries[i].summary 
except IndexError: 
    pass 
+0

@felix:實際上,entries [0]是feedparser模塊的一個對象,摘要是此條目的屬性[ ]對象。所以這就是爲什麼它不像你所說的那樣工作。你有其他選擇嗎? –

+0

@felix:對不起,但感謝您的幫助! –

+0

@felix:你的修補不會改善你的答案。我實際上正在考慮把我的upvote回來,唯一阻止我的是這個問題的其他答案。 – SilentGhost

1

首先要將給我的整數列表(i = range(10)),然後就失去對這個列表的引用。你確定你不是這個意思:

r = range(10) 

for i in r: 

或者乾脆:

for i in range(10): 
1

所有條目做:

import feedparser 
d = feedparser.parse("some URL") 

print "Information of user" 

for i in range(len(d['entries'])): 
    print d.entries[i].summary 

print " " 
1
import feedparser 
from StringIO import StringIO 
d = feedparser.parse("some URL") 
buff = StringIO() 
print >>buff, "Information of user" 

for i,e in enumerate(d.entries): 
    print >>buff, i, e.summary 

print >>buff," " 
print buff 

如果您需要的指數,我還建議使用字符串緩衝區在大s上執行I/O操作特林。

0

假如你想打印列表中的10個第一個元素,如果有10個或更多,或者它包含其他內容。 Felix已經提出了一個有異常管理的工作解決方案。你也可以使用下面的itertools。

import feedparser 
d = feedparser.parse('http://feedparser.org/docs/examples/atom10.xml') 

from itertools import islice 

for elt in islice(d.entries, 1, 10): 
    print elt.summary 

islice的好處是,如果你想訪問從說3到10(一片)的元素,它也可以很容易地工作。只需要將3替換爲1即可。如果您只想說甚至元素等,它也可以與步驟一起工作。

+0

那麼,如果我之前不知道飼料含量的限制,那麼如果飼料在10分鐘後每10分鐘更新一次,那麼該怎麼辦?我希望通過使用這種飼料來滿足這些需求? –

+0

@ rahman.bd:如果你不需要任何限制,你可以使用None作爲邊界。由於islice是一個迭代器,您仍然可以訪問原始對象,並且在使用顯式索引時它不會有所不同。但是,在你描述的情況下,如果你只對某些飼料感興趣,那麼你似乎不會使用一個更像是Felix的islice,或者是一個ifilter。 – kriss