2016-07-28 77 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