import decimal


def is_number(number):
    """ check if a string is number

    @param number: string to evaluate
    @return: false if not numeric, else returns digit(long or float)

    >>> is_number("233.33")
    233.33
    >>> is_number("233")
    233L
    >>> is_number("foobar")
    False

    """
    try:
        dato = decimal.Decimal(number)
    except decimal.InvalidOperation:
        return False
    else:
        # si es un numero entero
        if dato % 1 == 0:
            dato = int(dato)
        else:
            # si tiene decimales
            dato = float(dato)
        return dato