簡體   English   中英

列表索引必須是整數或切片,而不是 str 錯誤 Python

[英]list indices must be integers or slices, not str error Python

我的代碼如下。 這是用於解析來自 url 的鏈接的代碼。 我有 2 個網址的字典:

newsurls = {'Kommersant': 'https://www.kommersant.ru/RSS/news.xml',
            'Vesti': 'https://www.vesti.ru/vesti.rss'}


class News:
    def __init__(self, rss_dict):
        self.rss_dict = rss_dict
        self.parseRSS()
        self.get_links()

    def parseRSS(self):
        for key, url in self.rss_dict.items():
            return feedparser.parse(url)

    def get_links(self):

        allfeed = []
        for key, url in newsurls.items():
            feed = News.parseRSS(self)
            allfeed.extend(feed)

        links = []

        alllinks = []

        for newsitem in allfeed['items']:
            links.append(newsitem['link'])

        for key, url in self.rss_dict.items():
            alllinks.extend(links)
        self.alllinks = alllinks

        for l in alllinks:
            print(l)


News(newsurls)

我有錯誤TypeError: list indices must be integers or slices, not str in line for newsitem in allfeed['items']:

我想我有問題,因為它是dictonaries list ,我該如何優化這段代碼?

TypeError                                 Traceback (most recent call last)
<ipython-input-43-7e99e79bbd4b> in <module>()
----> 1 News(newsurls)

<ipython-input-42-a003b05ebeb5> in __init__(self, rss_dict)
      3         self.rss_dict = rss_dict
      4         self.parseRSS()
----> 5         self.get_links()
      6 
      7 

<ipython-input-42-a003b05ebeb5> in get_links(self)
     22         alllinks = []
     23 
---> 24         for newsitem in allfeed['items']:
     25             links.append(newsitem['link'])
     26 

TypeError: list indices must be integers or slices, not str

你得到這個錯誤的原因是因為allfeed是第 17 行定義的列表( allfeed = [] )。 要修復它,只需更換

for newsitem in allfeed['items']:

for newsitem in allfeed:

理解你正在嘗試做的事情有點困難,但我認為是這樣的:

    links = []
    for key, url in self.rss_dict.items():
        feed = feedparser.parse(url)
        for newsitem in feed['items']:
            links.append(newsitem['link'])
alllinks = []

for newsitem in allfeed['items']:

以上是罪魁禍首,要么定義

alllinks = {}

或使用

for newsitem in allfeed

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM