Frequency distribution of words and phrases
Use consistent naming

removeNonAscii(s) -&gt; remove_non_ascii(n)


Use with

def read_textfile(filename):
    # Reads the entire content of FILENAME and returns a non Ascii letters cleaned string
    with open(filename) as f:
        return removeNonAscii(f.read())


Merge similar functions

def remove_punctuation1(text):
    # Removes all punctuation and conotation from the string and returns a 'plain' string
    punctuation = '®©™€â´‚³©¥ã¼•ž®è±äüöž!@#Â“§$%^*()î_+€$=¿{”}[]:«;"»\â¢|&lt;&gt;,.?/~`0123456789'
    for sign in punctuation:
        text = text.replace(sign, "")
    return text

    def remove_punctuation(text):
    # Removes all punctuation and conotation from the string and returns a 'plain' string
    punctuation2 = '-&amp;'
    for sign in punctuation2:
        text = text.replace(sign, " ")
    return text


Should become

def remove_punctuation(text):
    # Removes all punctuation and conotation from the string and returns a 'plain' string
    punctuation2 = '-&amp;'+'®©™€â´‚³©¥ã¼•ž®è±äüöž!@#Â“§$%^*()î_+€$=¿{”}[]:«;"»\â¢|&lt;&gt;,.?/~`0123456789'
    for sign in punctuation2:
        text = text.replace(sign, " ")
    return text


Use docstrings

def read_textfile(filename):
    """
    Reads the entire content of FILENAME and 
    returns a non Ascii letters cleaned string.
    """
    with open(filename) as f:
        return removeNonAscii(f.read())


Avoid one-two letter variable names, prefer longer ones

l1 -&gt; words_to_check