2017-04-20 40 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:] 

我想看看,我即將推特的報價已被啾啾。 ExistString和randomQuote匹配一次(我知道我在調用randomQuote中的16,但不知何故:15和:16等於相同的輸出),但randomQuote不會改變!試圖通過推文檢查,如果一個已經存在twython

任何幫助表示讚賞,謝謝!

+0

在python中,如果嘗試切割超過列表的末尾,它將返回切片直到列表結束。這可能是爲什麼你使用':15'和':16'獲得相同的輸出。 –

+1

@CarlesMitjans我得到了相同的輸出,因爲randomQuote在開始時多了一個字符......愚蠢的錯誤! –

回答

0

你的代碼的結構有點混亂(我猜你沒有正確縮進它?),我不確定像printUntil這樣的東西是做什麼的,但我會建議的東西像這樣:

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) 

這將是顯著更容易,如果你只是有你已經在推特引號的文本的大名單;那麼你可以去if randomQuote in ExistingTweets作爲你的測試,根本不需要for循環。

正如一位網民說,你不應該使用不同的值([:15][:16]) - 他們可能會在某些特定情況下(其中字符串例如少於17個字符)相同的結果,但他們不會在其他情況下。

+0

感謝您的快速回答。這樣做已經更有意義了!但是...它仍然不起作用!我在for語句後面放了兩條打印語句,以打印推文和隨機引用。它會打印推文的前15個字符,但打印隨機引用的前14個字符!我也使用了不同的數字,同樣的事情。 Randomquote總是似乎是一個字符短。有任何想法嗎?! –

+0

好吧,想通了,printUntil增加了一個字符串的空間......我把一個字符縮短了!初學者錯誤哈哈哈。謝謝你的回答,我很感激! –

相關問題