我定义了一个类来处理推文块,所以我可以更轻松地管理它们
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条推文,就像我投入的那样...任何帮助人员?我确定这是我接近物体的方式的问题
答案 0 :(得分:0)
我认为问题在于您使用的是re.match()而不是re.search()
如果你想在推文的任何地方找到包含笑脸的推文,re.match()只会从字符串的开头搜索。