Manipulating list values in python
This may be a good case for generator functions.  And splitting it into two parts might make things more flexible: first, remove the stopwords; and second, handle the punctuation.  

Also, str.maketrans and str.translate can do the punctuation mapping.

def remove_stopwords(text_iterable, stopwords):
    for word in text_iterable:
        if word.lower() not in stopwords:
            yield word


def handle_punctuation(text_iterable, table):
    for word in text_iterable:
        yield word.translate(table)


# format is ("chars", "replacement")          
mappings = (("/-'", ' '),
            ('&amp;', ' &amp; '),
            ('?!.,"#$%\'()*+-/:;&lt;=&gt;@[\\]^_`{|}~' + '“”’', None))

table = str.maketrans({c:v for k,v in mappings for c in k})

stopword_free = remove_stopwords(text, stopwords)
cleaned_text = handle_punctuation(stopword_free, table)


cleaned_text is a generator, use list(handle_punctuation(stopword_free, table)) if you need an actual list of words.