<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def _put_table(D, name, table):
 """ Use the dataset and name to place the new table data into the dataset. :param dict D: Dataset :param str name: Table name / path to store new table :param dict table: Newly created table data :return dict D: Dataset """


    try:
        # print("Placing table: {}".format(name))
        table["tableName"] = name
        m = re.match(re_table_name, name)
        if m:
            _pc = m.group(1) + "Data"
            _section = m.group(1) + m.group(2)
            # place a measurement table
            if m.group(3) == "measurement":
                # This shouldn't happen. User chose one of our options. That should be an empty location.
                if name in D[_pc][_section]["measurementTable"]:
                    print("Oops. This shouldn't happen. That table path is occupied in the dataset")
                # Place the data
                else:
                    D[_pc][_section]["measurementTable"][name] = table
            # place a model table type
            else:
                _model = _section + m.group(3) + m.group(4)
                _tt = m.group(5) + "Table"
                if name in D[_pc][_model][_tt]:
                    print("Oops. This shouldn't happen. That table path is occupied in the dataset")
                else:
                    D[_pc][_model][_tt][name] = table

        else:
            print("Oops. This shouldn't happen. That table name doesn't look right. Please report this error")
            return

    except Exception as e:
        print("addTable: Unable to put the table data into the dataset, {}".format(e))

    return D