def load_delimited(filename, converters, delimiter=r'\s+'):
    r
    n_columns = len(converters)
    columns = tuple(list() for _ in range(n_columns))
    splitter = re.compile(delimiter)
    with _open(filename, mode='r') as input_file:
        for row, line in enumerate(input_file, 1):
            data = splitter.split(line.strip(), n_columns - 1)
            if n_columns != len(data):
                raise ValueError('Expected {} columns, got {} at '
                                 '{}:{:d}:\n\t{}'.format(n_columns, len(data),
                                                         filename, row, line))
            for value, column, converter in zip(data, columns, converters):
                try:
                    converted_value = converter(value)
                except:
                    raise ValueError("Couldn't convert value {} using {} "
                                     "found at {}:{:d}:\n\t{}".format(
                                         value, converter.__name__, filename,
                                         row, line))
                column.append(converted_value)
    if n_columns == 1:
        return columns[0]
    else:
        return columns