2017-04-20 45 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增加了一个字符串的空间......我把一个字符缩短了!初学者错误哈哈哈。谢谢你的回答,我很感激! –

相关问题