@@ -12,9 +12,12 @@ class CSVFileExtractor:
1212 def __init__ (self , col_var ):
1313 self .col_var = col_var
1414
15- def create_csv_file (self , output_file : str , patterns : Patterns ,content : str ) -> str | None :
15+ def export_extracted_data_to_csv (self , output_file : str , patterns : Patterns ,content : str ) -> str | None :
1616 extracted_data = DataExtractor .extract_data (patterns ,content )
1717
18+ if isinstance (extracted_data [0 ][0 ], tuple ):
19+ raise TypeError
20+
1821 if WithLogging .with_logging :
1922 extracted_data_copy = extracted_data
2023
@@ -24,7 +27,7 @@ def create_csv_file(self, output_file : str, patterns : Patterns ,content : str)
2427 with open (output_file ,'a' ,newline = '' ,encoding = ENCODING ) as f :
2528 writer = csv .writer (f )
2629 writer .writerows (extracted_data )
27-
30+
2831 if WithLogging .with_logging :
2932 return DataExtractor .log_found_data (extracted_data_copy )
3033
@@ -65,12 +68,12 @@ def put_data_in_excel_with_exact_order(extracted_data : ExtractedData, sheet : W
6568 columns_list_index += 1
6669 find_max_index += 1
6770
68- def create_excel_file (self , output_file : str , sheet_name : str , patterns : Patterns , content : str ) -> str | None :
71+ def export_extracted_data_to_excel (self , output_file : str , sheet_name : str , patterns : Patterns , content : str ) -> str | None :
6972 if not os .path .isfile (output_file ):
7073 wb = openpyxl .Workbook ()
7174 wb .save (output_file )
7275 wb .close ()
73-
76+
7477 sheet_name = sheet_name .title ()
7578
7679 wb = openpyxl .load_workbook (output_file )
@@ -87,7 +90,7 @@ def create_excel_file(self, output_file : str, sheet_name : str, patterns : Patt
8790
8891 if self .col_var .get () and not self .exact_var .get ():
8992 extracted_data = DataExtractor .create_column_order (extracted_data )
90-
93+
9194 if not self .exact_var .get (): # The codes in this if statement will not be executed if 'put in rows' is enabled
9295 ExcelFileExtractor .put_data_in_excel_without_exact_order (extracted_data ,sheet )
9396 else :
@@ -103,7 +106,7 @@ class DataExtractor:
103106 def __init__ (self , excel_var , log_text , col_var , exact_var ):
104107 self .log_text = log_text
105108 self .excel_var = excel_var
106-
109+
107110 self .excel_extractor = ExcelFileExtractor (col_var , exact_var )
108111 self .csv_extractor = CSVFileExtractor (col_var )
109112
@@ -127,29 +130,32 @@ def prepare_to_extract_data(self, output_file : str, input_file : str, sheet_nam
127130 raise ValueError ('The input file cannot be a binary file' )
128131
129132 assert output_file , 'The name of output file is required.'
130-
133+
131134 output_file_extention = os .path .splitext (output_file )[1 ].lower ()
132135
133136 if self .excel_var .get ():
134137 if output_file_extention in ['.xlsx' , '.xlsm' , '.xltx' , '.xltm' ]:
135- log_string = self .excel_extractor .create_excel_file (output_file ,sheet_name ,patterns ,content )
138+ log_string = self .excel_extractor .export_extracted_data_to_excel (output_file ,sheet_name ,patterns ,content )
136139 else :
137140 raise ValueError ('The output file format is not supported. It should be .xlsx, .xlsm, .xltx or .xltm' )
138141
139142 else :
140- log_string = self .csv_extractor .create_csv_file (output_file ,patterns ,content )
143+ log_string = self .csv_extractor .export_extracted_data_to_csv (output_file ,patterns ,content )
141144
142145 if WithLogging .with_logging :
143146 log_string += f'\n { output_file !r} saved.' + '\n '
144147 self .log_text .config (state = 'normal' )
145148 self .log_text .delete ('1.0' ,'end' )
146149 self .log_text .insert ('end' , log_string )
147- self .log_text .config (state = 'disabled' )
150+ self .log_text .config (state = 'disabled' )
148151 self .log_text .see ('end' )
149152
150153 except (FileNotFoundError , AssertionError , PermissionError , ValueError , re .PatternError ) as err :
151154 show_error (err )
152155
156+ except TypeError as err :
157+ show_error ("You cannot place multiple groups in a pattern" )
158+
153159 @staticmethod
154160 def log_found_data (extracted_data_copy : ExtractedData ) -> str :
155161 log_string = ''
@@ -158,13 +164,13 @@ def log_found_data(extracted_data_copy : ExtractedData) -> str:
158164 log_string += '\n ' .join (data_list ) + '\n '
159165
160166 return log_string
161-
167+
162168 @staticmethod
163169 def create_column_order (extracted_data : ExtractedData ) -> tuple [tuple [str ]]:
164170 max_len = max ([len (data_list ) for data_list in extracted_data ])
165171
166172 for data_list in extracted_data :
167173 for _ in range (max_len - len (data_list )):
168174 data_list .append ('' )
169-
170- return tuple (zip (* extracted_data ))
175+
176+ return tuple (zip (* extracted_data ))
0 commit comments