Frage

Das mag wie die Welten einfachste Python Frage scheint ... Aber ich werde ihm zu erklären, es gehen geben.

Im Grunde genommen habe ich durch die Seiten von json Ergebnisse aus einer Abfrage-Schleife.

der Standard Ergebnis ist dies

{'result': [{result 1}, {result 2}], 'next_page': '2'}

Ich brauche die Schleife Schleife fortzusetzen, die Liste im Ergebnis Schlüssel zu einem var anhängen, die später zugegriffen werden können und gezählt, um die Menge der Ergebnisse innerhalb der Liste. Allerdings brauche ich es nur eine Schleife während next_page wie nach einer Weile existiert, wenn es keine weiteren Seiten der next_page Schlüssel sind aus der dict gesunken.

zur Zeit habe ich diese

next_page = True
while next_page == True:
    try:
        next_page_result = get_results['next_page'] # this gets the next page
        next_url = urllib2.urlopen("http://search.twitter.com/search.json" + next_page_result)# this opens the next page
        json_loop = simplejson.load(next_url) # this puts the results into json
        new_result = result.append(json_loop['results']) # this grabs the result and "should" put it into the list
    except KeyError:
        next_page = False   
        result_count = len(new_result)
War es hilfreich?

Lösung

Alternate (Reiniger) Ansatz, so dass eine große Liste:

results = []
res = { "next_page": "magic_token_to_get_first_page" }
while "next_page" in res:
    fp = urllib2.urlopen("http://search.twitter.com/search.json" + res["next_page"])
    res = simplejson.load(fp)
    fp.close()
    results.extend(res["results"])

Andere Tipps

new_result = result.append(json_loop['results'])

Die Liste wird als Nebeneffekt des Methodenaufruf angehängt. append() tatsächlich gibt None, so new_result ist nun ein Verweis auf None.

Sie verwenden möchten

result.append(json_loop['results']) # this grabs the result and "should" put it into the list
new_result = result

, wenn Sie darauf bestehen, es auf diese Weise zu tun. Als Bastien sagte result.append(whatever) == None

AFAICS, Sie brauchen nicht die Variable new_result überhaupt.

result_count = len(result)

gibt Ihnen die Antwort, die Sie benötigen.

Sie nicht in eine dict..you anhängen können in Ihrem dict in Ihrer Liste anzuhängen, sollten Sie wie folgt tun

result['result'].append(json_loop['results'])

Wenn Sie überprüfen wollen, ob es keine nächste Seite Wert im Ergebnis dict ist, und Sie den Schlüssel aus dem dict zu löschen, wie dies zu tun

if not result['next_page']:
    del result['next_page']
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top