import ast, re
X= """["This is an hairy #calf",
    "goodbye to the snow #gone",
    "13742 the digits to give",
    "Remember the name d - mayne",
    "I      hate      you"]"""
l = ast.literal_eval(X)
rx_non_word = re.compile(r'[^\w\s]+')
rx_white = re.compile(r'\s{2,}')
print ( "\n".join([rx_white.sub(' ', rx_non_word.sub('', x)) for x in l]) )