2016-07-28 36 views
-1

我定義一個類來處理的鳴叫塊,所以我可以管理它們更容易一些類不能正常工作的方法正確

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] 

然後定義一個方法作爲管道的一部分:

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] 

但當我打電話給這個:

tweet = load_data('The_Donald.json') 
block = twitter_block(tag='donald') 
block.load(data=tweet) 
block.clean() 
block.print() 

它返回我加載到block object中的1504個tweets,和之前一樣,沒有clea寧鏈接或任何東西。雖然,實際上它並刪除@符號......但這種方法,

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) 

不會刪除微博沒有表情,返回1504鳴叫,我把在同一...任何幫助的傢伙?我敢肯定,這就是你想要找的鳴叫與我接近的物體

+2

那是你的實際縮進或者你不能正確抄寫了嗎?請仔細重現您的縮進,因爲嚴重縮進的Python代碼是無稽之談。 – khelwood

回答

0

我相信問題是,你正在使用re.match的方式()而不是re.search()

一個問題,即在推文中的任何地方都包含笑臉,re.match()僅從字符串的開頭搜索。

python -- re.match vs re.search

+0

re.search似乎給我的推文少了(704 vs 1504),但由於某種原因,他們沒有表情 – entercaspa

+0

嘗試將「pass」移入else語句,然後將「self.tweets.remove(tweet)」移動到如果聲明。 – Luke

+0

輸出中仍然沒有表情符號,它只是奇怪地返回推文 – entercaspa