2017-04-20 4 views
0
for tweets in ExistingTweets: 
    ExistString = tweets['text'] 
    ExistString = ExistString[:15] 
    if randomQuote[:16] == ExistString: 
     randomQuote = AllQuotes[randint(0,5)].getText() 
     randomQuote = randomQuote[printUntil:] 

Ich versuche zu sehen, ob das Zitat, über das ich gerade twittere, bereits getwittert wurde. Die ExistString und RandomQuote stimmen einmal überein (ich weiß, dass ich anrufe: 16 in randomQuote, aber irgendwie: 15 und: 16 gleich der gleichen Ausgabe), aber randomQuote ändert sich nicht!Versucht Tweets zu prüfen, ob bereits eine vorhanden ist twython

Jede Hilfe wird geschätzt, danke!

+0

In Python, wenn Sie versuchen, nach dem Ende der Liste in Scheiben schneiden, wird die Scheibe bis zum Ende der Liste zurückgeben. Das ist wahrscheinlich der Grund, warum Sie dieselbe Ausgabe mit ': 15' und': 16' erhalten. –

+1

@CarlesMitjans Ich bekam die gleiche Ausgabe, weil randomQuote einen Charakter mehr am Anfang hatte ... Dummer Fehler! –

Antwort

0

Die Struktur Ihres Codes ist ein wenig verwirrend (ich glaube, Sie haben ihn nicht korrekt eingerückt?) Und ich bin mir nicht sicher, was einige Dinge wie printUntil tun soll, aber was ich vorschlagen würde, wäre etwas dies wie:

randomQuote = AllQuotes[randint(0,5)].getText() # Pick your first random quote 
while True: 
    already_used = False 
    for tweets in ExistingTweets: 
     if randomQuote[:15] == tweets['text'][:15]: 
      already_used = True 
      break 
    if already_used: 
     randomQuote = AllQuotes[randint(0,5)].getText() # Pick another and try again. 
    else: 
     break 

print(randomQuote) 

Dies wäre wesentlich einfacher, wenn Sie nur eine große Liste des Textes der Zitate haben würden Sie schon getwittert; dann könnten Sie einfach if randomQuote in ExistingTweets als Ihr Test gehen, und würde die for Schleife überhaupt nicht brauchen.

Wie ein anderer Kommentator sagte, sollten Sie nicht verschiedene Werte werden ([:15] und [:16]) - sie können das gleiche Ergebnis in einigen speziellen Fällen geben (wo die Zeichenkette kürzer als 17 Zeichen zum Beispiel), aber sie werden nicht in anderen Fällen.

+0

Danke für die schnelle Antwort. Das macht schon mehr Sinn! Jedoch ... Es funktioniert immer noch nicht! Ich habe nach der for-Anweisung zwei print-Anweisungen geschrieben, um sowohl den Tweet als auch die Randomquote auszudrucken. Es druckt die ersten 15 Zeichen für den Tweet, aber die ersten 14 für das zufällige Zitat! Ich habe auch andere Nummern benutzt, dasselbe. Randomquote scheint immer ein Zeichen kurz zu sein. Irgendwelche Ideen?! –

+0

Nun, ich habe herausgefunden, dass die printUntil ein Leerzeichen hinzugefügt hat ... Ich habe ein Zeichen kurz geschnitten! Anfängerfehler hahaha. Danke für deine Antwort, ich weiß es zu schätzen! –

Verwandte Themen