2016-04-25 17 views
1

Ich versuche, doppelte (retweeted) Tweets, die aus einer Liste von Ergebnissen zurückgegeben werden. Ich dachte, ich könnte einfach eine Liste erstellen und prüfen, ob der Text eines Tweet bereits in der Liste ist, wenn nicht, dann füge ich ihn der Liste hinzu. Der Abschnitt des Codes, wo ich dies versuche, ist als folgt-Python Tweepy - Suche nach String in der Liste - mögliche Codierung Problem

searched_tweets = tweepy.Cursor(api.search, q=search, since=since_time, include_entities=True).items(max_tweets) 

filtered_tweets =[] 

for filtered in searched_tweets: 

    if str(filtered_tweets).find(str(filtered.text.encode('ascii', 'ignore')))== -1: 
     filtered_tweets.append(filtered) 

Das funktioniert nicht, da es im Wesentlichen immer true zurück, auch wenn die Beiträge bereits vorhanden ist. Ich vermute, das liegt an der Textcodierung? Als die codierte Zeichenfolge, nach der ich suche, wurden im Wesentlichen Teile entfernt? Jeder Ratschlag zur Überwindung wäre willkommen.

+0

ja vielleicht kodiert, ist das Problem. Warum kodiert man nicht zuerst sowohl die Referenz als auch die Teilzeichenfolge in "Unicode" (vor 'find')? – ahmad

+0

Danke Ahmad, ich bin mir nicht sicher, ob ich die Liste verschlüsseln (oder wissen kann), willst du die Liste jedes Mal durchlaufen und die Objekte als ASCII codieren? –

+0

Setzen Sie diese drei Zeilen in den allerersten Zeilen, in der Nähe von Importen, um die Kodierung global in UTF-8 zu ändern: 1) 'import sys', 2)' reload (sys) ', 3)' sys.setdefaultencoding ('utf8') '. – ahmad

Antwort

0

Eine einfachere Art und Weise Retweets wäre, um herauszufiltern:

for tweet in searched_tweets:  
    if hasattr(tweet,"retweeted_status"): 
     continue 

    #if you have reached this line, your tweet is not a retweet 
    #do stuff with your tweet