Seite 1 von 1

JSon convertierung

Verfasst: Montag 9. Juni 2014, 17:04
von audacity363
Guten Tag,
habe mir vor ein paar Tagen ein Buch zum Thema Python und Kivy angeschafft. Als Beispiel wird ein Wetterapp entwickelt die, die API von dieser Seite benutzt: http://openweathermap.org/api
Alles schön und gut. Die suche nach einer Stadt soll laut Buch so aussehen:

Code: Alles auswählen

    def search_location(self):
        search_template = "http://api.openweathermap.org/data/2.5/" + "find?q={}&type=like"
        search_url = search_template.format(self.search_input.text) # search_input ist ein Text Input Field
        request = UrlRequest(search_url, self.found_location)
        
    def found_location(self, request, data):
        cities = ["{}({})".format(d.['name'], d.['sys']['country'])
                  for d in data['list']]
        print "\n".join(cities)
Nun ja jetzt habe ich zwei Probleme:
1.) Leider verstehe ich die Zeilen sieben und acht nicht wirklich und sie werden im Buch auch nicht weiter beschrieben außer "Konvertierung der Suchergebnisse".

2.) Wenn ich den Code ausführe kommt die Fehlermeldung:

Code: Alles auswählen

C:\Users\User\kivy>python main.py
  File "main.py", line 16
    cities = ["{}({})".format(d.['name'], d.['sys']['country'])
                                ^
SyntaxError: invalid syntax

Das ich den Fehler nicht selber lösen kann liegt sehr wahrscheinlich daran, dass ich mit der Zeile Code nicht anfangen kann. :)

Beispielseite der API: http://api.openweathermap.org/data/2.5/ ... &type=like

Re: JSon convertierung

Verfasst: Montag 9. Juni 2014, 17:13
von BlackJack
@audacity363: Die Punkte gehören da nicht hin. Also statt ``d.['schlüssel']`` muss es ``d['schlüssel']`` heissen.

Ansonsten ist das einfach eine „list comprehension”. Falls Dir das Syntax-Konstrukt noch nicht bekannt sein sollte.

Re: JSon convertierung

Verfasst: Montag 9. Juni 2014, 17:27
von audacity363
Okey danke War ja einfacher als gedacht. Nein der Begriff hat mir noch nichts gesagt, werde mich aber mal einlesen.

Re: JSon convertierung

Verfasst: Montag 9. Juni 2014, 17:46
von Schorlem
Man könnte die list comprehension auch so umschrieben, damit's einfacher zu verstehen ist:

Code: Alles auswählen

def found_location(self, request, data):
    cities = []
    for d in data['list']:
        cities.append("{}({})".format(d.['name'], d.['sys']['country'])
    print("\n".join(cities))
Wär das gleiche, nur unnötiger^^

Nur, um die Funktionsweise zu verdeutlichen ;)

Re: JSon convertierung

Verfasst: Montag 9. Juni 2014, 19:56
von cofi
Und den Fehler hast du dringelassen, weils nicht zur Funktionsweise gehoert, ja? :twisted: