input: Write a function to read in a tweet and remove all punctuation, special characters, and stopwords. The function should return the cleaned list of words. If the input tweet is empty, return an empty list.
  
  
  import re
  import string
  from nltk.corpus import stopwords
  
  def clean_tweet(tweet):
      if not tweet:
          return []
      tweet_clean = re.sub(r'[^\w\s]','',tweet) #remove punctuation
      tokens = tweet_clean.split() #split string into individual words 
      stop_words = set(stopwords.words("english")) #get list of stopwords
      filtered_tokens = [w for w in tokens if not w in stop_words] #remove stopwords
      return filtered_tokens
  
  assert clean_tweet("I'm so excited to be going to the #MuseumTour! #BigDay #travel")==['excited', 'going', 'MuseumTour', 'BigDay', 'travel']
  assert clean_tweet("This is a test sentence. Can you remove #all the stopwords and punctuation?")==['test', 'sentence', 'remove', 'all', 'stopwords', 'punctuation']
  assert clean_tweet("")==[]
  assert clean_tweet("Hello world!")==['Hello', 'world']
  
output: def clean_tweet(tweet):
      if not tweet:
          return []
      tweet_clean = re.sub(r'[^\w\s]','',tweet)
      tokens = tweet_clean.split()
      stop_words = set(stopwords.words("english"))
      filtered_tokens = [w for w in tokens if not w in stop_words]
      return filtered_tokens