2015-04-08 3 views
0

Я видел много ошибок KeyCount в Интернете, но ни один из них не соответствует тем проблемам, которые у меня есть. Я использую синтаксический анализатор, чтобы попытаться создать одноранговое приложение, которое обращается ко всем URL-адресам в текстовом файле и выводит все записи в каждом URL-адресе. Когда я запускаю этот код:Feedparser Python Ошибка: KeyError: 'title'

 import feedparser as f 

    with open('addresses.rtf', 'r') as addresses: 
     for line in addresses: 
      d = f.parse(line) 

      print d["feed"]["title"] 
      print "" 
      print d.feed.subtitle 
      print "" 

      for post in d.entries: 
       print post.title 
       print post.link 
       print "" 

Я получаю сообщение об ошибке:

 Traceback (most recent call last): 
     File "/Users/Josh/Desktop/Feed Parser Python Project/init.py", line 7, in <module> 
print d["feed"]["title"] 
     File "build/bdist.macosx-10.6-intel/egg/feedparser.py", line 375, in __getitem__ 
return dict.__getitem__(self, key) 
    KeyError: 'title' 

Мой текстовый файл только .rtf файл, который имеет URL в каждой строке (3 линии).

Если кто-то может дать нам руку, пожалуйста, дайте мне знать, и если вам нужна дополнительная информация, пожалуйста, не стесняйтесь спрашивать. Любая помощь приветствуется. Спасибо!

+0

Перед тем, как открыть его, вам нужно будет преобразовать ваш документ «Rich Text Format» [rtf] в обычный текст. Или найдите библиотеку, которая может обрабатывать RTF. – AChampion

+0

скопируйте пасту в какую-то строку здесь – itzMEonTV

ответ

2

Трудно точно сказать, что здесь не так, но в общем случае любой KeyError состоит в том, что данные, которые вы пытаетесь получить, не совсем то, что вы ожидали. Лучше всего выкинуть свои предположения из окна и внимательно посмотреть на фактические данные, с которыми работает ваш код.

Для отладки я бы рекомендовал внимательно ознакомиться с тем, что происходит до ошибки. Каково значение line при чтении файла? Правильно ли это? Каково значение d? Получил ли вызов f.parse(line) действительный объект?