отображение элемента списка в python - PullRequest
1 голос
/ 15 февраля 2010

Я хочу манипулировать фидом, который содержит часто обновляемое (со временем) содержимое, с помощью фида-анализатора. Цель состоит в том, чтобы показать все содержимое обновленной ленты.

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 ]

4 голосов
/ 15 февраля 2010
for i in range(10):
    print d.entries[i].summary
4 голосов
/ 15 февраля 2010

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
1 голос
/ 15 февраля 2010
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 для выполнения операций ввода-вывода с большой строкой.

1 голос
/ 15 февраля 2010

для всех записей:

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 голос
/ 15 февраля 2010

Сначала вы назначаете список целых чисел i (i = range(10)), а затем просто теряете ссылку на этот список. Вы уверены, что не имели в виду:

r = range(10)

for i in r:

или просто:

for i in range(10):
0 голосов
/ 15 февраля 2010

Скажем, вы хотите напечатать 10 первых элементов списка, если их 10 или более, или что в нем содержится иначе. Феликс уже предложил рабочее решение с управлением исключениями. Вы также можете использовать 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 (фрагмент), он также работает так же легко. Просто нужно заменить 1 на 3. Он также работает с шагом, если вы хотите сказать только четные элементы и т. Д.

...