def extract_words(path_to_file):
    """
    Takes a path to a file and returns the non-stop
    words, after properly removing nonalphanumeric chars
    and normalizing for lower case
    """
    fail = False
    word_list = []
    if type(path_to_file) is str and path_to_file:
        try:
            with open(path_to_file) as f:
                str_data = f.read()
        except IOError as e:
            print "I/O error({0}) when opening {1}: {2}".format(e.errno, path_to_file, e.strerror)
            fail = True
    
        if not fail:
            pattern = re.compile('[\W_]+')
            word_list = pattern.sub(' ', str_data).lower().split()

            try:
                with open('../stop_words.txt') as f:
                    stop_words = f.read().split(',')
            except IOError as e:
                print "I/O error({0}) when opening ../stops_words.txt: {1}".format(e.errno, e.strerror)
                fail = True

            if not fail:
                stop_words.extend(list(string.ascii_lowercase))

    return [w for w in word_list if not w in stop_words] if not fail else []
dataset/ETHPy150Open crista/exercises-in-programming-style/34-the-c-flow/tf-34.py/extract_words/original