用kivy显示字典列表

时间:2017-05-20 15:15:27

标签: python list dictionary kivy

我使用以下代码从ESPN抓取数据:

import requests  
from bs4 import BeautifulSoup 

url = 'http://www.espn.com/nba/team/schedule/_/name/bos'  

r = requests.get(url)  
soup = BeautifulSoup(r.text)

listes = soup.find_all('ul', class_='game-schedule') 

resultats = []
i = 0
for liste in listes :

    if not i % 2 :
        resultat = {}

    for item in liste.find_all('li') :
        if item.text :
            if 'class' in item.attrs :
                cle = str(item.attrs['class'][-1])
                if cle in ('win', 'loss') :
                    cle = 'resultat'
                resultat[cle] = item.text 

    if i % 2 and 'score' in resultat.keys() :
        resultats.append(resultat)
    i += 1

print(resultats)

它将凯尔特人队最后一场比赛的结果打印成一个词典列表。问题是我想用Kivy来展示它,但我试图通过尝试来取得成功:

from kivy.uix.listview import ListView
from kivy.base import runTouchApp


class MainView(ListView):
    def __init__(self, **kwargs):
        super(MainView, self).__init__(
            resultats)

if __name__ == '__main__':
    runTouchApp(MainView())

它向我显示了这个错误:

TypeError: __init__() takes 1 positional argument but 2 were given

2 个答案:

答案 0 :(得分:0)

from kivy.uix.listview import ListView    
from kivy.base import runTouchApp

class MainView(ListView): 
    def __init__(self, **kwargs):
        super(MainView, self).__init__(item_strings=resultats)

if __name__ == '__main__':
    runTouchApp(MainView())

你可以尝试上面的片段,希望这有帮助吗

答案 1 :(得分:0)

这是正确的,pramod说在这种情况下分离并不是完全必要的。但你有一天可能真的想要这样做,你可以。有很多方法可以完成它,这是我的头脑中的一个。它可能不是最有效的方法,但它有效。

import re
mydict = [  {'score': '106-102', 'resultat': 'L', 'game-status': 'vs', 'team-name': 'Chicago'}, 
            {'score': '111-97', 'resultat': 'L', 'game-status': 'vs', 'team-name': 'Chicago'}, 
            {'score': '104-87', 'resultat': 'W', 'game-status': '@', 'team-name': 'Chicago'}]
for i in  range(len(mydict)):
    tempdict = list(dict(mydict[i]).values())
    for x in range(len(tempdict)):
        if re.search('\d',tempdict[x]):
            print(tempdict[x])

结果:     106-102     111-97     104-87