2017-04-20 12 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は変更されません。既にツイーンが存在するかどうかチェックするツイートを確認しようとしています

ご協力いただきありがとうございます。

+0

Pythonでは、リストの末尾をスライスしようとすると、リストの最後までスライスが返されます。これはたぶん ':15'と':16'を使って同じ出力を得ている理由です。 –

+1

@CarlesMitjans randomQuoteが先頭に1文字以上あるので、私は同じ出力を得ていました...愚かな間違い! –

答えて

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ループは全く必要ありません。

もう1人のコメント者は、異なる値([:15][:16])を使用すべきではありません。特定のケースで同じ結果が得られるかもしれませんが(たとえば文字列が17文字未満の場合)、他の場合には。

+0

クイックアンサーに感謝します。これはもうすでに意味があります!しかし...それはまだ動作しません! for文の後に2つのprint文を入れて、tweetとrandomquoteの両方を出力します。これは、ツイートの最初の15文字を出力しますが、ランダム引用の最初の14文字を表示します!私は同じ数字を使いました。ランダムクォートは常に1文字短いと思われる。何か案は?! –

+0

これで、printUntilが文字列にスペースを追加したとわかりました...私は短い文字をスライスしました!初心者の間違いハハハ。あなたの答えをありがとう、私はそれを感謝する! –

関連する問題