def cast(s):
    """ Function which clarifies the implicit type of
    strings, a priori coming from csv-like files.

    Example
    -------
    >>> cast('1')
    1
    >>> cast('1.')
    1.0
    >>> cast('1E+0')
    1.0
    >>> cast('1E+1')
    10.0
    >>> cast('one')
    'one'
    >>> cast('One')
    'one'
    """
    s = str(s)
    try:
        float(s)
        if '.' in s or 'E' in s:
            return float(s)
        else:
            return int(s)
    except:
        return s.lower()
