2016-07-28 16 views
-1

ich eine Klasse definiert Blöcke von Tweets zu behandeln, damit ich sie ein wenig gelänge einfacherKlasse nicht funktionierende Methoden richtig

class twitter_block(object): 

def __init__(self): 
    self.tweets = [] 
    self.df = pd.DataFrame() 

    self.tag = '' 
def load(self, data): 

    self.tweets = [x for x in data] 

dann ein Verfahren als Teil einer Pipeline definiert:

def clean(self): 

    HTTP_PATTERN = '^https?:\/\/.*[\r\n]*' 
    AT_PATTERN = '@\w+ ?' 

    # tke away links 
    self.tweets = [re.sub(HTTP_PATTERN, '', str(x), flags=re.MULTILINE) for x in self.tweets] 
    # take away @ signs 
    self.tweets = [re.sub(AT_PATTERN,'',str(x)) for x in self.tweets] 

aber Wenn ich dies anrufe:

gibt es die 1504 Tweets, die ich in das Blockobjekt geladen habe, wie zuvor, keine clea Links oder irgendetwas. Obwohl, eigentlich ist der @ -Zeichen entfernen ... aber diese Methode,

def smilecheck(self): 
    #save a tweet if there is a smiley there 
    smiley_pattern = '^(:\(|:\))+$' 
    for tweet in self.tweets: 

     if re.match(smiley_pattern, str(tweet)): 
      pass 
     else: 
      self.tweets.remove(tweet) 

entfernt nicht das Tweets ohne smileys, kehrt 1504 Tweets, das gleiche wie ich in setzen ... irgendwelche Hilfe Jungs? Ich bin sicher, das ist ein Problem mit der Art und Weise bin ich näher Objekte

+2

Ist das Ihre tatsächliche Vertiefung oder haben Sie es richtig transkribieren gescheitert? Bitte reproduzieren Sie Ihren Einzug sorgfältig, da schlecht eingerückter Python-Code Unsinn ist. – khelwood

Antwort

0

ich das Problem glauben, dass Sie re.match() anstelle von re.search()

Wo Sie die Tweets finden möchten verwenden, Enthält einen Smiley irgendwo im Tweet, re.match() sucht nur am Anfang der Zeichenkette.

Siehe python -- re.match vs re.search

+0

re.search scheint mir weniger Tweets (704 vs 1504) zu geben, aber keine Smileys in ihnen aus irgendeinem Grund – entercaspa

+0

Versuchen Sie, die "Pass" in die else-Anweisung zu bewegen und dann die "self.tweets.remove (tweet)" in die wenn Aussage. – Luke

+0

die Ausgabe hat immer noch keine Smilies und es gibt nur die Tweets seltsam zurück – entercaspa