<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def table_extract(self, table_name, destination, format='CSV', compress=True, field_delimiter=',', print_header=True):
 """Exports the table to GCS. Args: table_name: the name of the table as a tuple of components. destination: the destination URI(s). Can be a single URI or a list. format: the format to use for the exported data; one of CSV, NEWLINE_DELIMITED_JSON or AVRO. Defaults to CSV. compress: whether to compress the data on export. Compression is not supported for AVRO format. Defaults to False. field_delimiter: for CSV exports, the field delimiter to use. Defaults to ',' print_header: for CSV exports, whether to include an initial header line. Default true. Returns: A parsed result object. Raises: Exception if there is an error performing the operation. """

    url = Api._ENDPOINT + (Api._JOBS_PATH % (table_name.project_id, ''))
    if isinstance(destination, basestring):
      destination = [destination]
    data = {
        # 'projectId': table_name.project_id, # Code sample shows this but it is not in job
        # reference spec. Filed as b/19235843
        'kind': 'bigquery#job',
        'configuration': {
            'extract': {
                'sourceTable': {
                    'projectId': table_name.project_id,
                    'datasetId': table_name.dataset_id,
                    'tableId': table_name.table_id,
                },
                'compression': 'GZIP' if compress else 'NONE',
                'fieldDelimiter': field_delimiter,
                'printHeader': print_header,
                'destinationUris': destination,
                'destinationFormat': format,
            }
        }
    }
    return datalab.utils.Http.request(url, data=data, credentials=self._credentials)