我想使用Feed解析器操作包含经常更新(带时间)内容的Feed。目标是显示更新的Feed的所有内容。
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
然后我怎样才能获得所有内容?有人可以告诉我这个问题吗?提前谢谢!
答案 0 :(得分:4)
i
不是整数。我猜i
已经是Feed的一个条目,但最好将其重命名为:
尝试:
for entry in d.entries:
print entry.summary
如果您想要前10个参赛作品:
try:
for i in range(10):
print d.entries[i].summary
except IndexError:
pass
答案 1 :(得分:4)
for i in range(10):
print d.entries[i].summary
答案 2 :(得分:1)
首先为i(i = range(10)
)分配一个整数列表,然后丢失对该列表的引用。你确定你不是故意的:
r = range(10)
for i in r:
或简单地说:
for i in range(10):
答案 3 :(得分: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 " "
答案 4 :(得分: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
如果你需要索引,我建议使用String Buffer对大字符串进行I / O操作。
答案 5 :(得分: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.如果你只想说偶数元素等,它也适用于步骤。