def lasio_get(l,
              section,
              item,
              attrib='value',
              default=None,
              remap=None,
              funcs=None):
    """
    Grabs, renames and transforms stuff from a lasio object.

    Args:
        l (lasio): a lasio instance.
        section (str): The LAS section to grab from, eg ``well``
        item (str): The item in the LAS section to grab from, eg ``name``
        attrib (str): The attribute of the item to grab, eg ``value``
        default (str): What to return instead.
        remap (dict): Optional. A dict of 'old': 'new' LAS field names.
        funcs (dict): Optional. A dict of 'las field': function() for
            implementing a transform before loading. Can be a lambda.

    Returns:
        The transformed item.
    """
    remap = remap or {}
    item_to_fetch = remap.get(item, item)
    if item_to_fetch is None:
        return None

    try:
        obj = getattr(l, section)
        result = getattr(obj, item_to_fetch)[attrib]
    except:
        return default

    if funcs is not None:
        f = funcs.get(item, null)
        result = f(result)

    return result
Grabs, renames and transforms stuff from a lasio object.

    Args:
        l (lasio): a lasio instance.
        section (str): The LAS section to grab from, eg ``well``
        item (str): The item in the LAS section to grab from, eg ``name``
        attrib (str): The attribute of the item to grab, eg ``value``
        default (str): What to return instead.
        remap (dict): Optional. A dict of 'old': 'new' LAS field names.
        funcs (dict): Optional. A dict of 'las field': function() for
            implementing a transform before loading. Can be a lambda.

    Returns:
        The transformed item.