import re


def clean_column(s):
    """ utils function that clean a string to be a cleaner name of column
    
    Parameter
    ---------
    s : string
        the string to clean
        
    Return
    ------
    cleaned string
    
    """

    if s is None:
        return None

    r = s.strip().lower()
    r = re.sub(r"[?\(\)/\[\]\\]", "", r)
    r = re.sub(r"[:' \-\.\n]", "_", r)
    r = re.sub("_+", "_", r)
    r = r.replace("#", "number")
    r = r.replace("%", "pct")
    r = r.replace("$", "usd")
    r = r.replace("&", "_and_")
    r = r.replace("€", "eur")
    r = r.replace("£", "gbp")
    r = r.replace("¥", "jpy")

    return r