def MakeEmptyTable(in_table=[[]], row_count=0, column_count=0):
    """
    1 Read in *in_table*
    2 Create an empty table 
        of '' values,
        which has with the same number of rows and columns as the table,
        (where columns based on the first row).
    3 If the user has specified *row_count* and/or *column_count*,
        then these will be used place of the dimensions of *in_table*.
    
    Therefore *in_table* can be omitted from input if BOTH row_count and 
    column_count are set.
         e.g. MakeEmptyTable(row_count=1000, column_count=200)

    And if *in_table* is used, then the other 2 inputs are optional.
        e.g. MakeEmptyTable(CSVdata, row_count=1000)
            will use column_count of CSVdata but row_count as 1000

    Args
        in_table: <type 'list'> 2D table as list of lists, which may contain
                    table data in rows and columns.
                    e.g.    [['abc','def','hij'],
                            ['232','965','TES']
                            ['235','768','QWE']]
        row_count: <type 'int'> number of empty rows to create.
                    If this is not set, then in_table row count will be used.
        column_count: <type 'int'> number of empty columns to create in each
                        row.
                    If this is not set, then column count of *in_table* first
                        row  will be used.
    """
    if not row_count:
        row_count = len(in_table)  # length of table

    if not column_count:
        column_count = len(in_table[0])  # length of first row of table

    row_contents = [""] * column_count  # repeat '' for X columns
    blank_table = [row_contents] * row_count  # repeat blank row for Y rows
    return blank_table