def make_table_header(table_label, table_width, junction_char='+',
    horizontal_char='-', vertical_char='|'):
    """Generalized way make a table header string.

    :param table_label: label to print on header
    :param table_width: total width of table
    :param junction_char: character used where vertical and
        horizontal lines meet.
    :param horizontal_char: character used for horizontal lines.
    :param vertical_char: character used for vertical lines.

    :returns: string
    """
    if len(table_label) >= table_width - 2:
        raise ValueError(
            'Table header %s is longer than total width of the table.')
    label_and_space_width = table_width - len(table_label) - 2
    padding = 0 if label_and_space_width % 2 == 0 else 1
    half_table_width = label_and_space_width // 2
    left_spacing = ' ' * half_table_width
    right_spacing = ' ' * (half_table_width + padding)
    border_line = ''.join((junction_char, horizontal_char * (table_width - 
        2), junction_char))
    label_line = ''.join((vertical_char, left_spacing, table_label,
        right_spacing, vertical_char))
    return '\n'.join((border_line, label_line))
