<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def extract_tabular(self, header='', prefix='', suffix='', table_type='', *args, **kwargs):
 		""" 		Method for performing the tabular data extraction. \ 		:param result: A dictionary containing the extracted data so far 		:param table_type: Can be "rows" or "columns". This determines the type of table to be extracted. \ 		A row extraction is when there is a single row to be extracted and mapped to a set of headers. \ 		A column extraction is when a set of rows have to be extracted, giving a list of header-value mappings. 		:param header: The headers to be used for the table. This can be a list of headers, or a selector that gives the list of headers 		:param prefix: A prefix to be added to each header 		:param suffix: A suffix to be added to each header 		:param selector: For row extraction, this is a selector that gives the row to be extracted. \ 		For column extraction, this is a list of selectors for each column. 		:param attr: The attribute to be extracted from the selected tag 		:param default: The default value to be used if the selector does not return any data 		:param verbosity: The verbosity set as the argument for scrapple run 		:return: A 2-tuple containing the list of all the column headers extracted and the list of \ 		dictionaries which contain (header, content) pairs 		"""

		if type(header) in [str, unicode]:
			try:
				header_list = self.get_tree_tag(header)
				table_headers = [prefix + h.text + suffix for h in header_list]
			except XPathError:
				raise Exception("Invalid %s selector for table header - %s" % (self.__selector_type__, header))
			except Exception:
				raise Exception("Invalid %s selector for table header - %s" % (self.__selector_type__, header))
		else:
			table_headers = [prefix + h + suffix for h in header]
		if len(table_headers) == 0:
			raise Exception("Invalid %s selector for table header - %s" % (self.__selector_type__, header))
		if table_type not in ["rows", "columns"]:
			raise Exception("Specify 'rows' or 'columns' in table_type")
		if table_type == "rows":
			result_list = self.extract_rows(table_headers=table_headers, *args, **kwargs)
		else:
			result_list = self.extract_columns(table_headers=table_headers, *args, **kwargs)
		return table_headers, result_list