2016-08-31 6 views
-3

Okay, also ich versuche, einen Facebook-Bot hier zu machen, um ein paar Sachen für mich zu tun, aber ich glaube nicht wirklich, dass das für dich zählt.Machen Sie Python für Schleife gehen nur einmal

Wie auch immer, um das zu erreichen, was ich tun möchte, muss ich etwas tun. Also, mit dem Facebook-API Ich erhalte einige Beiträge id mit dem folgenden Code:

for posts in parsed_json: 
    post_id = posts.get('id') 
    post_url = "http://facebook.com/" + str(post_id) 
    text_save(post_url) 

Aber das Problem ist, dass dieser Code wird mir die letzten 25 Post-IDs und ich brauche nur die letzten. Also bassicaly was ich versuche zu tun ist: Holen Sie sich die letzte Post-ID und führen Sie dann die Funktion text_save() damit aus.

Aber diese Schleife bringt mir 25 IDs, und ich brauche sie nicht. Ich brauche nur den ersten.

Wie kann ich die for-Schleife so einschränken, dass sie nur einmal ausgeführt wird? Ich habe folgendes versucht:

a = 0 
while a < 1: 
    for posts in parsed_json: 
     post_id = posts.get('id') 
     post_url = "http://facebook.com/" + str(post_id) 
     text_save(post_url) 
     a = a + 1 

Aber das hat nicht wirklich funktioniert, es geht immer noch 25 mal durch. Irgendwelche Ideen?

+5

Wenn Sie nur eine benötigen, warum überhaupt eine Schleife verwenden? Verwenden Sie einfach post_id = parsed_json [0] .get ('id') '. – chepner

+0

@chepner Ich habe versucht, das selbst auszuarbeiten - die einzige mögliche Erklärung, die ich heraufbeschwören konnte, war, dass es ein Streaming-Iterator/Generator anstatt einer indexierbaren Sequenz ist, und der Versuch, den sie versucht haben, scheint der erste und nicht der letzte zu sein trotzdem ... baffled –

+0

Nun, setzen Sie den 'limit' Parameter auf 1, so dass die API (höchstens) einen Datensatz an erster Stelle zurückgibt. – CBroe

Antwort

3

Um den letzten Wert (oder ersten) zu erhalten, verwenden Sie einfach "http://facebook.com/" + str(parsed_json[-1].get('id')) (oder parsed_json [0])

Wenn Sie stattdessen Schleife verwenden, nur den letzten Wert, durchlaufen und führen Sie den Befehl anschließend zu speichern :

post_url = '' 
for posts in parsed_json: 
    post_id = posts.get('id') 
    post_url = "http://facebook.com/" + str(post_id) 
text_save(post_url) 

nach einer interation Gebrauch von einer Schleife zu brechen:

a = 0 
for posts in parsed_json: 
    if a >= 1: break 
    post_id = posts.get('id') 
    post_url = "http://facebook.com/" + str(post_id) 
    text_save(post_url) 
    a += 1 
Verwandte Themen