TypeError:'set'对象不可订阅

时间:2017-01-18 11:33:44

标签: python flask

我的烧瓶应用程序出现“设置”错误我一直在编写RSS提要网络应用程序,但目前我遇到了一个我无法弄清楚的错误;这是我的代码:

import feedparser

from flask import Flask
from flask import render_template

app = Flask(__name__)

RSS = {"http://feeds.bbci.co.uk/news/rss.xml",
   "http://rss.iol.io/iol/news", "http://feeds.foxnews.com/foxnews/latest", "http://rss.cnn.com/rss/edition.rss"}
#error occurs here

@app.route("/")
@app.route("/<publication>")
def get_news(publication="bbc"):
    #ERROR OCCURS HERE
    feed = feedparser.parse(RSS[publication])
    first_article = feed['entries'][0]

    return render_template("home.html",
                       title=first_article.get("title"),
                       published=first_article.get("publication"),
                       summary=first_article.get("summary"))


if __name__ == "__main__":
    app.run(debug=True, port=5000)

我在这两行中得到了错误

    feed = feedparser.parse(RSS[publication])
    first_article = feed['entries'][0]

无法弄清楚实际错误

2 个答案:

答案 0 :(得分:5)

正如Iron Fist所指出的那样,filter['col2'] filter['col3'] 是一个集合(不可订阅),尽管它看起来好像是在尝试将它用作字典。根据您用于RSS的默认值,我猜测您想要这样的内容:

get_news

答案 1 :(得分:0)

正如Iron Fist所说,似乎你正在定义一个集合并将其用作字典。很难确定,但对于我在代码中看到的内容,RSS实际上应该是一个字典,使用提供者的名称作为关键。所以:

RSS = {"bbc":"http://feeds.bbci.co.uk/news/rss.xml",
       "iol":"http://rss.iol.io/iol/news",
       "foxnews":"http://feeds.foxnews.com/foxnews/latest", 
       "cnn":"http://rss.cnn.com/rss/edition.rss"}