在python中显示列表项

时间:2010-02-15 12:29:56

标签: python feedparser

我想使用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

然后我怎样才能获得所有内容?有人可以告诉我这个问题吗?提前谢谢!

6 个答案:

答案 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.如果你只想说偶数元素等,它也适用于步骤。