[英]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.