上课没有正常运作的方法

时间:2016-07-28 16:04:31

标签: python regex class methods

我定义了一个类来处理推文块,所以我可以更轻松地管理它们

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()

它返回我加载到块对象中的1504条推文,与之前相同,没有清理链接或任何内容。虽然,实际上确实删除了@标志......但是这个方法,

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条推文,就像我投入的那样...任何帮助人员?我确定这是我接近物体的方式的问题

1 个答案:

答案 0 :(得分:0)

我认为问题在于您使用的是re.match()而不是re.search()

如果你想在推文的任何地方找到包含笑脸的推文,re.match()只会从字符串的开头搜索。

请参阅python -- re.match vs re.search